熊猫groupby值并将观测值返回到数据集

时间:2019-06-05 20:21:45

标签: python-3.x pandas-groupby

我有一个类似以下的数据集:

id    value
a      0
a      0
a      0
a      0
a      1
a      2
a      2
a      2
b      0
b      0
b      1
b      2
b      2

我想对“ id”列进行分组,并在“ value”列中获取观察值的数量,然后在原始数据集中返回一个新列,该列计算每个id中“ value”观察值发生的次数。

我要查找的输出示例在“输出”列中表示:

id    value    output
a      0        4
a      0        4 
a      0        4
a      0        4
a      1        1
a      2        3
a      2        3
a      2        3
b      0        2
b      0        2
b      1        1 
b      2        2
b      2        2

在对ID“ a”进行分组时,有4个观测值0,在“输出”列中为包含id“ a”和值0的每一行提供。

我已经尝试了groupby的应用并申请,但无济于事。任何建议将非常有帮助。谢谢。

2 个答案:

答案 0 :(得分:0)

按ID和值分组,然后对值进行计数。

data.groupby(['id' , 'value'])['id'].transform('count')

答案 1 :(得分:0)

更新:我为所有遇到此问题的人找到了一种解决方案,并且效果很好。

grouped = df.groupby(['id','value'])
df['output'] = grouped['value'].transform('count')

这将返回每个存储桶下的观测值计数,并将该计数返回给满足该条件的每个观测值,如上面的“输出”列所示。