Pandas 将两列分组为主列

时间:2021-03-15 12:32:00

标签: python pandas group-by

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

>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? 可以通过 Multi-Column by tuples 轻松完成,但是如果我没有元组是不可能的吗?

1 个答案:

答案 0 :(得分:0)

您可以使用辅助函数 np.arange 的整数除法和 2 的列长度,然后通过 chrord 函数将整数转换为字母 s,最后传递给 { {3}}:

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