问题描述
如何为以下示例数据框在熊猫中构建多索引:
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
解决方法
没有Multiindex
与MultiIndex 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'),'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
,
另一个选择:
df.columns = pd.MultiIndex(levels=[['value','day'],['mean','max','']],codes=[[1,0],[2,1]])
输出:
day value
mean max
0 2020-01-01 1 40
1 2020-01-02 5 100