【问题标题】:Expand Pandas Group By to Many Columns将 Pandas Group By 扩展到多列
【发布时间】:2018-08-15 21:06:55
【问题描述】:

我有一个这样的数据框,

创建数据框data

d = {'Machine ID': [100, 100, 101, 101], 'Machine': ["ABC", "ABC", "CDQ", "CDQ"], 
    "June": [10,0,12,15], "July": [12,15,0,32], "August": [0,15,20,11]}
data = pd.DataFrame(data=d)

数据框:

 Machine ID Machine June    July    August
0   100     ABC      10     12     0
1   100     ABC      0      15     15
2   101     CDQ      12     0      20
3   101     CDQ      15     32     11

现在,我想groupby 并按月汇总,所以,我这样做了,

machine_group = data.groupby(['Machine ID','Machine'])['June'].sum().reset_index(name = 'June Sum')

我得到以下信息,

 Machine ID Machine June Sum
0   100     ABC     10
1   101     CDQ     27

但是,我需要这样的输出

         Machine ID Machine June Sum July Sum August Sum
    0   100     ABC         10       27       15
    1   101     CDQ         27       32       31

如何通过代码扩展我的组以使它们排列整齐。否则,就目前而言,我的选择是按月分组并将分组列附加到新的数据框中。 任何建议将不胜感激。

【问题讨论】:

  • 您正在分组,然后仅在其中一个系列上执行.sum(通过使用['June'] 切片)。您可以将其应用于所有系列,但只需在 groupby 之后执行 .sum()。如果您需要对不同的列执行不同的操作,那么您应该查看groupby.agg

标签: python-3.x pandas group-by


【解决方案1】:

试试:

machine_group = data.groupby(['Machine ID','Machine']).sum()\
                    .add_suffix(' Sum').reset_index()

输出:

   Machine ID Machine  June Sum  July Sum  August Sum
0         100     ABC        10        27          15
1         101     CDQ        27        32          31

【讨论】:

  • .add_prefix('Sum')
  • @Scott Boston,我错过了什么?这看起来与我的代码几乎相似
  • @user9431057 您不需要添加聚合列,只需聚合数据框中未包含在组中的所有数字列。
  • @user9431057 而且,我们使用add_suffix 用“Sum”来补充列标题,这是一种快速重命名的方法。
猜你喜欢
  • 2019-03-10
  • 1970-01-01
  • 2017-08-12
  • 1970-01-01
  • 1970-01-01
  • 2011-10-21
  • 1970-01-01
  • 2018-03-05
  • 1970-01-01
相关资源
最近更新 更多