Python pandas:向我的数据框中添加一列来计算变量

问题描述 投票:0回答:2

我有一个像这样的数据框“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()
python pandas dataframe group-by count
2个回答
116
投票

调用

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

0
投票

也可以通过

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

© www.soinside.com 2019 - 2024. All rights reserved.