我有一个如下所示的数据集:
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"列分组并获取"值"列中的观察值数量,并在原始数据集中返回一个新列,该列计算每个 id 中"值"观察值发生的次数。
我正在寻找的输出示例在"输出"列中表示:
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 的每一行的"输出"列中提供。
我已经尝试了分组的应用程序并申请,但无济于事。任何建议都会非常有帮助。谢谢。
更新:我想出了一个解决方案,为任何也面临这个问题的人,它运行良好。
grouped = df.groupby(['id','value'])
df['output'] = grouped['value'].transform('count')
这将返回每个存储桶下的观察计数,并将该计数返回到满足该条件的每个观察,如上面的"输出"列所示。
按 id 和 value 分组,然后计数值。
data.groupby(['id' , 'value'])['id'].transform('count')