[英]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的密度值
我已經將數據作為密度和礦物的兩個數據框加載,並將它們合並,因此每種礦物在其前面都將具有正確的密度。
采用
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.