【问题标题】:Pandas: How to sum second level columns in hierarchical dataframePandas:如何对分层数据框中的二级列求和
【发布时间】:2021-10-18 17:45:03
【问题描述】:

我有一个如下所示的 DataFrame:

import pandas as pd
df = pd.DataFrame(data=[[1,2,4,5,1,2], [7,8,10,11,7,8], [13,14,16,17,4,5]], index=pd.date_range('2004-01-01', '2004-01-03'))
df.columns = pd.MultiIndex.from_product([['x', 'y', 'z'], list('ab')])
df
             x       y       z     
             a   b   a   b   a  b  
2004-01-01   1   2   4   5   1  2  
2004-01-02   7   8   10  11  7  8  
2004-01-03  13  14   16  17  4  5  

我想对每个第一级列的第二级列 (a+b) 求和,并将第一级列作为列名

【问题讨论】:

    标签: python pandas dataframe multi-index hierarchical-data


    【解决方案1】:

    可以在groupby中指定levelaxis参数按列索引的0级聚合(axis=1):

    df.groupby(level=0, axis=1).sum()
    
                 x   y   z
    2004-01-01   3   9   3
    2004-01-02  15  21  15
    2004-01-03  27  33   9
    

    【讨论】:

    • 效果很好,谢谢!如果我想减去 (b-a) 并将第一级列作为列名怎么办?
    • 你可以试试df.loc[:, (slice(None), 'b')].droplevel(1, 1) - df.loc[:, (slice(None), 'a')].droplevel(1, 1).loc[:, (slice(None), 'b')]获取列bdroplevel去掉二级列索引,然后直接subtract
    猜你喜欢
    • 2014-07-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-13
    • 2016-08-08
    • 1970-01-01
    • 1970-01-01
    • 2020-10-10
    • 2022-09-27
    相关资源
    最近更新 更多