我有一个像这样的数据框“gt”:
org group
org1 1
org2 1
org3 2
org4 3
org5 3
org6 3
并且我想将“count”列添加到 gt 数据帧以计算组的成员数量,预期结果如下:
org group count
org1 1 2
org2 1 2
org3 2 1
org4 3 3
org5 3 3
org6 3 3
我知道如何对组中的每一项进行操作,但不知道如何对所有组项目重复计数,这是我使用的代码:
gtcounts = gt.groupby('group').count()
transform
这将返回与原始 df 对齐的系列:
In [223]:
df['count'] = df.groupby('group')['group'].transform('count')
df
Out[223]:
org group count
0 org1 1 2
1 org2 1 2
2 org3 2 1
3 org4 3 3
4 org5 3 3
5 org6 3 3
也可以通过
value_counts()
和 map
的组合来完成。基本上,这个想法是找到每个组的计数;然后将这些计数映射回组。
df['count'] = df['group'].map(df['group'].value_counts())
# or
df['count'] = df['group'].map(df.groupby('group')['group'].count())
此外
groupby.transform
也可以与 size()
一起使用。
df['count'] = df.groupby('group').transform('size')
这两种方法都会产生以下转换。
如果您正在寻找一种将每组计数器分配为列的方法,请使用
groupby.cumcount()
。
df['count'] = df.groupby('group').cumcount()+1