首页 > 解决方案 > Pandas:组织一个大型编号的 DF

问题描述

我有一个df看起来像这样的东西:

         ID         x1_2020-04-07  x2_2020-04-07  x1_2020-04-08   x2_2020-04-08
0     102717           21.0             11              15              21
1     136703           12.0             15              88              27
2     105140            2.0             39              53              24

本质上,x1x2我在一个日期范围内跟踪的变量:2020-04-07 to 2020-04-08

但我想以某种方式组织这个 df 以便可以更轻松地查询它,我可能希望引入一个 MultiIndex 可能需要x1x2更高级别,然后日期如下:

MultiIndex              x1              x2              x1              x2
         ID         2020-04-07      2020-04-07      2020-04-08       2020-04-08
0     102717           21.0             11              15              21
1     136703           12.0             15              88              27
2     105140            2.0             39              53              24

目标是能够查看一段时间内x1和/或x2一段时间内的偏差,因此我试图提高其df结构的效率。

我将如何去创造一个df这样的?

编辑

或像这样:

MultiIndex           2020-04-07      2020-04-07      2020-04-08       2020-04-08
         ID             x1              x2              x1              x2
0     102717           21.0             11              15              21
1     136703           12.0             15              88              27
2     105140            2.0             39              53              24

标签: pythonpython-3.xpandasdataframe

解决方案


用于DataFrame.swaplevel将拆分列名称的级别更改顺序为MultiIndex

df = df.set_index('ID')
df.columns = df.columns.str.split('_', n=1, expand=True)
df = df.swaplevel(0,1, axis=1)
print (df)

       2020-04-07     2020-04-08    
               x1  x2         x1  x2
ID                                  
102717       21.0  11         15  21
136703       12.0  15         88  27
105140        2.0  39         53  24

推荐阅读