亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將 pandas 數據框除以其索引列和行的總和

將 pandas 數據框除以其索引列和行的總和

守候你守候我 2023-09-26 14:33:04
這是我目前擁有的:    print(df)    10   25  2610  530  1   46  25  1    61  6126  46   61  330我如何將其轉換為 df1 以便我們將行中的每個元素除以索引列的總和?df1 的輸出應如下所示:df1:    10             25               2610  530/(530)     1/(530+61)       46/(530+330)  25  1/(61+530)    61/(61)          61/(61+330)26  46/(330+530)  61/(330+61)      330/(330)    print(df1)    10      25        2610  1       0.0016    0.053425  0.0016  1         0.156026  0.0534  0.1560    1
查看完整描述

3 回答

?
慕勒3428872

TA貢獻1848條經驗 獲得超6個贊

IIUC,嘗試:


a = np.diag(df)[None, :]

b = np.diag(df)[:, None]


c = a+b

np.fill_diagonal(c, np.diag(df))


df_out = df.div(c)

df_out

輸出:


          10        25        26

10  1.000000  0.001692  0.053488

25  0.001692  1.000000  0.156010

26  0.053488  0.156010  1.000000


查看完整回答
反對 回復 2023-09-26
?
呼喚遠方

TA貢獻1856條經驗 獲得超11個贊

我認為這是解決方案,但您必須更改列和索引。


import pandas as pd

df = pd.DataFrame({530: [530, 1, 46],

                   61: [1, 61, 61],

                   330: [46, 61, 330]},

index = [530, 61, 330])


for i in range(len(df)):

   for j in range(len(df)):

      if i == j:

         df.iloc[i,j] = df.iloc[i, j] / df.index[i]

      else:

         df.iloc[i,j] = df.iloc[i,j] / (df.index[i] + df.columns[j])

df


查看完整回答
反對 回復 2023-09-26
?
慕尼黑的夜晚無繁華

TA貢獻1864條經驗 獲得超6個贊

您可以將行除以列中的最大值來重現您的示例。


 df1 = pd.DataFrame(

{

    "column1": df['10'].divide(df['10'].max()),

    "column2": df['25'].divide(df['25'].max()),

    "column3": df['26'].divide(df['26'].max())

}


)


查看完整回答
反對 回復 2023-09-26
  • 3 回答
  • 0 關注
  • 181 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號