【问题标题】:Pandas groupBy multiple columns and aggregationPandas groupBy 多列和聚合
【发布时间】:2021-11-01 09:25:23
【问题描述】:

在数据框中有 4 列 col_A、col_B、col_C、col_D。需要对列进行分组(col_A、col_B、col_C)并通过 col_D 聚合平均值。以下是我尝试过的代码 sn-p 并且有效

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'])['col_D'].agg(['mean', 'count']).reset_index()?
  • as_index 可以设置为 False;否定重置索引

标签: python pandas


【解决方案1】:

使用Named Aggregation

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 值

【讨论】:

    猜你喜欢
    • 2020-11-05
    • 2019-10-12
    • 2023-03-07
    • 1970-01-01
    • 2017-07-02
    • 2017-07-20
    • 2018-09-29
    • 2020-01-28
    • 1970-01-01
    相关资源
    最近更新 更多