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

时间:2019-04-01 04:48:33

标签: python pandas dataframe

我有一个看起来像这样的数据框:

                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 < / strong>

我已经将数据作为密度和矿物的两个数据框加载,并合并了它们,因此每种矿物在其前面将具有正确的密度。

1 个答案:

答案 0 :(得分:3)

使用

  • DataFrame.div(轴= 0)执行除法,
  • 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