Pandas基于多列的分组和聚合

3

在数据框中有4列col_A,col_B,col_C和col_D。需要按照col_D对列(col_A,col_B,col_C)进行分组并计算平均值。以下是我尝试并成功的代码片段:

df.groupby(['col_A','col_B','col_C']).agg({'col_D':'mean'}).reset_index()

但除了上述结果之外,还需要按(col_A,col_B,col_C)的分组计数进行聚合。请帮忙。

df.groupby(['col_A','col_B','col_C']).agg({'col_D': ['mean', 'count']}).reset_index()


df.groupby(['col_A','col_B','col_C'])['col_D'].agg(['mean', 'count']).reset_index()?请将上述代码翻译成中文。 - Henry Ecker
as_index可以设置为False;取消重置索引 - sammywemmy
1个回答

2
使用命名聚合:

使用命名聚合

result = (
    df.groupby(['col_A', 'col_B', 'col_C'], as_index=False)
      .agg(mean=('col_D', 'mean'), count=('col_D', 'count'))
)

对于count列,您在选择聚合函数时有两个选择:

  • count=('col_D', 'count')将忽略col_D中的任何NaN值
  • count=('col_D', 'size')将包括col_D中的NaN值

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接