有人可以帮助我了解熊猫中的(可能)群体。
这是df:
easy_donor v_fam count
0 donor_1_NS IGHV1 5202376
1 donor_1_NS IGHV2 1955547
2 donor_1_NS IGHV3 70426272
3 donor_1_NS IGHV4 452367
4 donor_1_NS IGHV5 4842145
5 donor_1_NS IGHV6 490142
6 donor_1_NS IGHV7 19708
24 donor_2_NS IGHV1 31258603
25 donor_2_NS IGHV2 5295899
26 donor_2_NS IGHV3 47286417
27 donor_2_NS IGHV4 44553802
然后我希望每个计数作为按捐献者分组的计数总和的频率。
像:
df.groupby('easy_donor').sum()['count']
easy_donor
donor_1_NS 83394639
donor_2_NS 129191591
donor_3_HS 220549762
donor_3_NS 104821016
donor_4_HS 200444923
donor_4_NS 121287306
然后,如果原始数据框中的每个计数与easy_donor列匹配,则除以groupby总和。我是否必须加入原始数据框?
答案 0 :(得分:5)
尝试:
df.groupby('easy_donor')["count"].apply(lambda x: x / x.sum())
答案 1 :(得分:2)
忘记这个答案!这只是一个想法。不可行
请注意,使用pandas apply
的速度令人难以忍受。相反,请尝试使用原生广播。
df.groupby(by='easy_donor')['count'] * 1. / df.groupby(by='easy_donor').sum()