【问题标题】:Pandas grouping two columns as master column熊猫将两列分组为主列
【发布时间】:2021-06-12 17:23:51
【问题描述】:

我有以下带有日期时间索引的数据框:

>df

                     DEtoDK    DKtoDE  
datetime                           
2021-01-01 00:00:00  2500.0    2500.0
2021-01-01 01:00:00  2500.0    2500.0
2021-01-01 02:00:00  2500.0    2500.0

但是,我不喜欢它的外观,它限制了我同时调用两个列值(例如,我想同时调用 DEtoDKDKtoDE)。因此,我想将DEtoDKDKtoDE 两列组合成一个主列A

我该怎么做?

预期结果:

>df
                     A                   
                     DEtoDK    DKtoDE
datetime                           
2021-01-01 00:00:00  2500.0    2500.0
2021-01-01 01:00:00  2500.0    2500.0
2021-01-01 02:00:00  2500.0    2500.0

编辑:

它可以通过 How to do Multi-Column from_tuples? 的元组通过多列轻松完成,但是如果我没有元组是不可能的吗?

【问题讨论】:

    标签: python pandas group-by


    【解决方案1】:

    您可以通过帮助器np.arange 使用整数除法通过2 的列长度,然后通过chrord 函数将整数转换为字母s,最后传递给MultiIndex.from_arrays

    a = [chr(ord('A') + x) for x in np.arange(len(df.columns)) // 2]
    
    df.columns = pd.MultiIndex.from_arrays([a, df.columns])
    print (df)
                               A                 B         
                        A_DEtoDK A_DKtoDE B_DEtoDK B_DKtoDE
    datetime                                               
    2021-01-01 00:00:00   2500.0   2500.0    500.0    500.0
    2021-01-01 01:00:00   2500.0   2500.0    500.0    500.0
    2021-01-01 02:00:00   2500.0   2500.0    500.0    500.0
    

    【讨论】:

    • '_' 仅用于可视化。我的数据框中没有这个。
    • @oakca - 嗯,所以这意味着需要按第一个字母和所有其他字母分开?
    • 想象每 2 列是一个组,我想为每 2 列设置一个主列名称。更容易想象我只有 2 列,我需要为这两个列设置 1 个主列
    • @oakca - 可能是0,0,1,1,2,2.. 之类的数字?
    • 我更喜欢字符串而不是数字,更新问题@jezrael
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 2019-10-21
    • 1970-01-01
    • 1970-01-01
    • 2016-08-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多