我有一个类似以下的数据集:
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的应用并申请,但无济于事。任何建议将非常有帮助。谢谢。
答案 0 :(得分:0)
按ID和值分组,然后对值进行计数。
data.groupby(['id' , 'value'])['id'].transform('count')
答案 1 :(得分:0)
更新:我为所有遇到此问题的人找到了一种解决方案,并且效果很好。
grouped = df.groupby(['id','value'])
df['output'] = grouped['value'].transform('count')
这将返回每个存储桶下的观测值计数,并将该计数返回给满足该条件的每个观测值,如上面的“输出”列所示。