将熊猫数据框中的所有行除以特定行
问题内容:
我有一个熊猫数据框,如下所示:
Sample_name C14-Cer_mean C16-Cer_mean C18-Cer_mean C18:1-Cer_mean
0 1 1 0.124749 0.285659 35.302029 8.173144
1 1 10 0.332976 0.656197 39.220933 6.446620
2 1 13 0.227423 0.272440 26.866943 5.763723
3 1 14 0.128359 0.604903 29.848169 6.801633
4 1 5 0.204000 0.242652 21.354158 4.637632
5 1 6 0.122697 0.412868 25.168258 5.866785
6 1 9 0.161679 0.569781 28.707720 6.525267
7 Blank 0.408713 0.526573 0.531430 0.111025
我想获得一个数据框,其中所有行中的值均已被Sample_name为“ Blank”的行除以该行中的值(归一化为示例“
Blank”)。如何在熊猫中实现这一目标?
问题答案:
您可以选择所有行并使用切片df loc
,然后使用调用div
并传递最后一行iloc[-1]
:
In [58]:
df.loc[:,'C14-Cer_mean':] = df.loc[:,'C14-Cer_mean':].div(df.iloc[-1]['C14-Cer_mean':])
df
Out[58]:
Sample_name C14-Cer_mean C16-Cer_mean C18-Cer_mean C18:1-Cer_mean
index
0 1 1 0.305224 0.542487 66.4284 73.6153
1 1 10 0.814694 1.24617 73.8026 58.0646
2 1 13 0.556437 0.517383 50.5559 51.9137
3 1 14 0.314057 1.14875 56.1658 61.2622
4 1 5 0.499128 0.460814 40.1824 41.7711
5 1 6 0.300203 0.784066 47.3595 52.842
6 1 9 0.395581 1.08206 54.0198 58.773
7 Blank 1 1 1 1