【问题标题】:Grouping Python Panda table with additional heading使用附加标题对 Python Panda 表进行分组
【发布时间】:2014-08-11 17:51:44
【问题描述】:

我有下表:

NSRCODE CM        CM % of LSA   LBH    LBH % of LSA     Total Area  Total Area % of LSA
PBL_AWI                     
BFNN    0.000000    0.000000    28.9207     0.338512    28.920700   0.323014
BONS    4.470549    1.090581    914.0085    10.698329   918.479049  10.258446
BTNI    0.000000    0.000000    3.3713      0.039461    3.371300    0.037654
BTNN    25.385459   6.192732    1974.8005   23.114736   2000.185959 22.339976
FONG    4.162559    1.015448    168.7122    1.974750    172.874759  1.930829
FONS    1.681416    0.410178    516.9960    6.051359    518.677416  5.793082
FTNI    0.000000    0.000000    31.7252     0.371339    31.725200   0.354337
FTNN    0.000000    0.000000    653.6473    7.650841    653.647300  7.300554
SONS    58.395844   14.245548   437.9098    5.125667    496.305644  5.543213
STNN    4.560384    1.112496    0.0000      0.000000    4.560384    0.050935

我正在寻找一种方法来对表格进行分组,使其看起来像这样。每两列都分组在一个标题下,但 NSRCODE 仍按原样显示。

             Central M                Lower BH                 Summary
NSRCODE CM        CM % of LSA   LBH    LBH % of LSA     Total Area  Total Area % of LSA
PBL_AWI                     
BFNN    0.000000    0.000000    28.9207     0.338512    28.920700   0.323014
BONS    4.470549    1.090581    914.0085    10.698329   918.479049  10.258446
BTNI    0.000000    0.000000    3.3713      0.039461    3.371300    0.037654
BTNN    25.385459   6.192732    1974.8005   23.114736   2000.185959 22.339976
FONG    4.162559    1.015448    168.7122    1.974750    172.874759  1.930829
FONS    1.681416    0.410178    516.9960    6.051359    518.677416  5.793082
FTNI    0.000000    0.000000    31.7252     0.371339    31.725200   0.354337
FTNN    0.000000    0.000000    653.6473    7.650841    653.647300  7.300554
SONS    58.395844   14.245548   437.9098    5.125667    496.305644  5.543213
STNN    4.560384    1.112496    0.0000      0.000000    4.560384    0.050935

[编辑] 根据@Chrisb

完成映射后,我得到了这个:

Total Area   Total Area % of LSA    LBH % of LSA    LBH       CM          CM % of LSA
Summary            Summary          Lower BH        Lower BH  Central M   Central M

我正在尝试获取当前位于第一行第二行的标签,以便它们在每组中仅出现一次。

例如:

        Summary
Total Area   Total Area % of LSA

Summary 涵盖了它下面的两个值。

【问题讨论】:

    标签: python pandas tabular heading


    【解决方案1】:

    首先,定义你的映射:

    col_mapping = {'Central M': ['CM', 'CM % of LSA'], 
                   'Lower BH': ['LBH % of LSA', 'LBH'], 
                    'Summary': ['Total Area', 'Total Area % of LSA']}
    

    将其解压缩到元组列表中:

    cols = [(k,v) for k,sublist in col_mapping.items() 
                  for v in sublist]
    

    指定为多索引

    df.columns = pd.MultiIndex.from_tuples(cols)
    

    【讨论】:

    • 感谢您的快速响应,这几乎成功了。总面积 总面积 LSA LBH 百分比 LSA LBH CM CM LSA 百分比 摘要 摘要 下 BH 下 BH 中部 M 中部 M
    • @user765015 - 见编辑,在构建元组时我切换了kv
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-19
    • 1970-01-01
    • 1970-01-01
    • 2020-10-14
    • 2019-07-30
    • 2022-12-05
    • 2015-09-04
    相关资源
    最近更新 更多