【问题标题】:How can I agg on multiple columns?如何在多个列上进行聚合?
【发布时间】:2021-06-26 21:04:18
【问题描述】:

我不确定我错过了什么,但我已经研究了一段时间,无法弄清楚如何在多个列上进行聚合。这有效:

df.groupby(['Exchange', 'Industry','Sector']).agg({'totalRevenue': ['mean', 'min', 'max']})

但我没有通过 for 循环循环,而是尝试:

df.groupby(['Exchange', 'Industry','Sector']).agg({['totalRevenue', 'capitalExpenditures']: ['mean', 'min', 'max']})

我得到:TypeError: unhashable type: 'list'

一个相关的问题是在我运行上面的命令之后我运行的:

grouped_multiple.columns = ['totalRevenue_mean', 'totalRevenue_min', 'totalRevenue_max']

为了命名我可以识别的新列名。如果我在多个列上运行聚合,我该怎么做?

【问题讨论】:

  • 您可以提供df.groupby(columns that need to be grouped).agg({'Balance': ['mean', 'sum'], 'ATM_drawings': ['mean', 'sum']}) 您是否希望将这两个值聚合在一起?
  • 嗨@JoeFerndz 没有不聚合在一起(我想我必须把它放在分组中)我只是说如果我想在具有相同分组的多个列上重复相同的聚合,我可以发送一口气?
  • 我得到了这个链接。看看这是否有帮助。 stackoverflow.com/questions/51653170/…

标签: pandas


【解决方案1】:

你可以fromkeys

d = dict.fromkeys(['totalRevenue', 'capitalExpenditures'], ['mean', 'min', 'max'])
grouped_multiple = df.groupby(['Exchange', 'Industry','Sector']).agg(d)

对于列名

grouped_multiple.columns = grouped_multiple.columns.map('_'.join)

【讨论】:

  • 哇!你太棒了,它不仅解决了我的问题,而且在我看来,它写得非常漂亮。谢谢!可悲的是,他们没有为惊人的 SO 答案颁发高尚的奖品……但是。
猜你喜欢
  • 1970-01-01
  • 2019-01-10
  • 1970-01-01
  • 2016-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多