将Pandas Group By扩展为多列

use*_*057 0 group-by python-3.x pandas

我有这样的数据帧,

创建一个数据框 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)
Run Code Online (Sandbox Code Playgroud)

数据框:

 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
Run Code Online (Sandbox Code Playgroud)

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

machine_group = data.groupby(['Machine ID','Machine'])['June'].sum().reset_index(name = 'June Sum')
Run Code Online (Sandbox Code Playgroud)

我得到以下,

 Machine ID Machine June Sum
0   100     ABC     10
1   101     CDQ     27
Run Code Online (Sandbox Code Playgroud)

但是,我需要一个像这样的输出

         Machine ID Machine June Sum July Sum August Sum
    0   100     ABC         10       27       15
    1   101     CDQ         27       32       31
Run Code Online (Sandbox Code Playgroud)

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

Sco*_*ton 5

尝试:

machine_group = data.groupby(['Machine ID','Machine']).sum()\
                    .add_suffix(' Sum').reset_index()
Run Code Online (Sandbox Code Playgroud)

输出:

   Machine ID Machine  June Sum  July Sum  August Sum
0         100     ABC        10        27          15
1         101     CDQ        27        32          31
Run Code Online (Sandbox Code Playgroud)

  • @ user9431057并且,我们使用`add_suffix`来补充列标题,使用'Sum'快速重命名. (2认同)