[英]Pandas - Get value as frequency in groupby
Can someone help me with the (possible) groupby in pandas. 有人可以帮助我(大熊猫)中的(可能的)群体。
Here is the df: 这是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
Then I want each count as a frequency of the sum of the counts grouped by donor. 然后我希望每个计数作为由捐赠者分组的计数总和的频率。
Like: 喜欢:
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
Then each count in the original data frame divided by the groupby sum if they match the easy_donor column. 然后,如果它们与easy_donor列匹配,则原始数据帧中的每个计数除以groupby总和。 Do I have to join on original dataframe?
我是否必须加入原始数据框?
尝试:
df.groupby('easy_donor')["count"].apply(lambda x: x / x.sum())
FORGET THIS ANSWER!!! 忘记这个答案! THIS IS JUST AN IDEA.
这只是一个想法。 NOT VIABLE
不可行
Note that using pandas apply
is unbearably slow. 请注意,使用
pandas apply
非常慢。 Instead, try using the native broadcasting . 相反,尝试使用原生广播 。
df.groupby(by='easy_donor')['count'] * 1. / df.groupby(by='easy_donor').sum()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.