簡體   English   中英

將Pandas DataFrame中的行值除以特定列

[英]Divide row values in a pandas DataFrame by a specific column

我有一個看起來像這樣的數據框:

                1     2     3     4  Density
Mineral                                     
Quartz       13.4  23.0  23.4  28.3    2.648
Plagioclase   5.2   8.2   8.5  11.7    2.620
K-feldspar    2.3   2.4   2.6   3.1    2.750

我需要做的是基於對行進行的條件來計算新行:

期望的輸出

                 1     2     3     4     Density 
Mineral                                                           
Quartz         13.4  23.0  23.4  28.3    2.648
Plagioclase     5.2   8.2   8.5  11.7    2.620
K-feldspar      2.3   2.4   2.6   3.1    2.750
Quartz_v       5.06  8.69  8.84 10.69    2.648
Plagioclase_v   ...

所以這個過程基本上我需要執行以下步驟:

1)定義新行,例如Quartz_v

2)然后執行以下計算Quartz_v = Quartz的每個列值除以Quartz_v密度

我已經將數據作為密度和礦物的兩個數據框加載,並將它們合並,因此每種礦物在其前面都將具有正確的密度。

采用

  • 使用axis = 0的DataFrame.div執行除法,
  • rename以重命名索引,並且
  • append將結果連接到原始文件(您也可以使用pd.concat代替)。

d = df['Density']
result = df.append(df.div(d, axis=0).assign(Density=d).rename(lambda x: x+'_v'))
result

                       1          2          3          4  Density
Mineral                                                           
Quartz         13.400000  23.000000  23.400000  28.300000    2.648
Plagioclase     5.200000   8.200000   8.500000  11.700000    2.620
K-feldspar      2.300000   2.400000   2.600000   3.100000    2.750
Quartz_v        5.060423   8.685801   8.836858  10.687311    2.648
Plagioclase_v   1.984733   3.129771   3.244275   4.465649    2.620
K-feldspar_v    0.836364   0.872727   0.945455   1.127273    2.750

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM