按出现次数对数据帧中的项进行分组

2024-05-23 21:01:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下数据集:

x     | y
-------------
foo   | 2
foo   | 3
foo   | 2
bar   | 5
baz   | 3
baz   | 2
baz   | 1

我想要一个汇总表,显示每个x值出现的次数、出现次数以及这些x项的平均y值。像这样:

#  | count | avg_y
-------------------
1  | 1     | 5
2  | 0     | nan
3  | 2     | 2.1667

我会打电话给:

df.x.value_counts().value_counts().sort_index()

但我不知道如何检索avg_y


Tags: 数据dfindexfoovaluecountbarbaz
1条回答
网友
1楼 · 发布于 2024-05-23 21:01:27

^{}^{}一起使用:

a = df.groupby('x')['y'].agg(['size','mean']).groupby('size')['mean'].agg(['size','mean'])
#added missing rows
a = a.reindex(range(1, a.index.max() + 1))
a['size'] = a['size'].fillna(0).astype(int)
print (a)
      size      mean
size                
1        1  5.000000
2        0       NaN
3        2  2.166667

细节:

print (df.groupby('x')['y'].agg(['size','mean']))
     size      mean
x                  
bar     1  5.000000
baz     3  2.000000
foo     3  2.333333

相关问题 更多 >