熊猫为列构造多索引

时间:2020-09-01 07:36:24

标签: python pandas multi-index

如何为以下示例数据框在熊猫中构建多索引:

import pandas as pd
df = pd.DataFrame({'day':['2020-01-01', '2020-01-02'], 'value_mean':[1,5], 'value_max':[40,100]})

改变现有的:

          day  value_mean  value_max
0  2020-01-01           1         40
1  2020-01-02           5        100

类似:

                            value
          day         mean        max
0  2020-01-01           1         40
1  2020-01-02           5        100

2 个答案:

答案 0 :(得分:2)

没有MultiindexMultiIndex columns的连接问题,唯一的技巧是在第二级使用空字符串:

df.columns = df.columns.str.split('_', expand=True)
df = df.rename(columns = lambda x: x if pd.notna(x) else '')
print (df)
          day value     
               mean  max
0  2020-01-01     1   40
1  2020-01-02     5  100

print (df.columns)
MultiIndex([(  'day',     ''),
            ('value', 'mean'),
            ('value',  'max')],
           )

如果要清除,请不要在级别中输入空字符串值:

df = df.set_index('day')
df.columns = df.columns.str.split('_', expand=True)
print (df)
           value     
            mean  max
day                  
2020-01-01     1   40
2020-01-02     5  100

答案 1 :(得分:0)

另一个选择:

df.columns = pd.MultiIndex(levels=[['value', 'day'], ['mean','max','']], codes=[[1,0,0],[2,0,1]])

输出:

    day         value
                mean    max
0   2020-01-01  1       40
1   2020-01-02  5       100