Python Pandas-以groupby中的频率获取值

Python Pandas-以groupby中的频率获取值,python,pandas,group-by,pandas-groupby,Python,Pandas,Group By,Pandas Groupby,有人能帮我做熊猫群比吗 以下是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_

有人能帮我做熊猫群比吗

以下是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
然后我希望每个计数都是按捐赠者分组的计数总和的频率

比如:

然后,原始数据帧中的每个计数除以groupby总和(如果它们与easy_列匹配)。我必须加入原始数据帧吗?

试试:

df.groupby('easy_donor')["count"].apply(lambda x: x / x.sum())

忘记这个答案!!!这只是一个想法。不可行

请注意,使用
apply
的速度非常慢。相反,请尝试使用本机广播

df.groupby(by='easy_donor')['count'] * 1. / df.groupby(by='easy_donor').sum()

这段代码为我提出了这样的问题:TypeError:对于*:'SeriesGroupBy'和'float'@Mindcraft,不支持的操作数类型,我打赌你忘了
['count']
部分。不,我正是在使用这一行。一个更简单的例子:
df=pd.DataFrame({'easy_-provider':['A','A','A','B','B'],'count':[123,50,30,10,20]})df.groupby(by='easy_-provider')['count']*1./df.groupby(by='easy_provider').sum()
@Mindcraft,是的,你是对的,我终于发现这是一个愚蠢的答案,我应该在发布它之前测试一下。谢谢,它能工作。然而,你得到的是一个pd.Series对象,你能帮我得到原始的数据帧格式,只需要用频率替换“count”列吗?
df.groupby(by='easy_donor')['count'] * 1. / df.groupby(by='easy_donor').sum()