所以我有一个看起来像这样的数据框......让我们称之为df1
Disease Gene1 Gene2 Gene3 Gene4
0 D1 1 1 26 1
1 D2 1 1 1 1
2 D3 1 18 1 17
3 D4 25 1 1 1
4 D5 1 1 1 1
5 D6 1 33 1 12
6 D7 1 1 1 1
7 D8 5 1 1 1
另一个看起来像...... df2:
Disease Counts
0 D1 117
1 D2 224
2 D3 411
3 D4 180
4 D5 96
5 D6 24
6 D7 331
7 D8 512
我需要根据疾病列匹配将df1中的行除以df2中的计数。
答案 0 :(得分:0)
如果您为两个dfs设置索引为“疾病”,则可以调用div
:
In [127]:
df.set_index('Disease').div(df1.set_index('Disease')['Counts'], axis=0)
Out[127]:
Gene1 Gene2 Gene3 Gene4
Disease
D1 0.008547 0.008547 0.222222 0.008547
D2 0.004464 0.004464 0.004464 0.004464
D3 0.002433 0.043796 0.002433 0.041363
D4 0.138889 0.005556 0.005556 0.005556
D5 0.010417 0.010417 0.010417 0.010417
D6 0.041667 1.375000 0.041667 0.500000
D7 0.003021 0.003021 0.003021 0.003021
D8 0.009766 0.001953 0.001953 0.001953
通过将索引设置为“疾病”,dfs将与索引值对齐
然后,您可以致电reset_index
恢复列:
In [132]:
(df.set_index('Disease').div(df1.set_index('Disease')['Counts'], axis=0)).reset_index()
Out[132]:
Disease Gene1 Gene2 Gene3 Gene4
0 D1 0.008547 0.008547 0.222222 0.008547
1 D2 0.004464 0.004464 0.004464 0.004464
2 D3 0.002433 0.043796 0.002433 0.041363
3 D4 0.138889 0.005556 0.005556 0.005556
4 D5 0.010417 0.010417 0.010417 0.010417
5 D6 0.041667 1.375000 0.041667 0.500000
6 D7 0.003021 0.003021 0.003021 0.003021
7 D8 0.009766 0.001953 0.001953 0.001953