无法删除pandas数据帧中的MultiIndex

时间:2017-11-23 03:07:36

标签: python pandas dataframe

我是具有以下结构的数据框df。我试过`df.reset_index()来删除multiIndex。但它不起作用。

   df.reindex_axis(sorted(df.columns), axis=1)
   print(df.columns)

   MultiIndex(levels=[['MID Index', 'RLG Index', 'RLV Index', 'RTY Index', 'S5COND Index', 'S5CONS Index', 'S5ENRS Index', 'S5FINL Index', 'S5HLTH Index', 'S5INDU Index', 'S5INFT Index', 'S5MATR Index', 'S5RLST Index', 'S5TELS Index', 'S5UTIL Index', 'SPX Index', 'date'], ['LP', 'PX', '']],
       labels=[[16, 7, 7, 15, 15, 0, 0, 8, 8, 3, 3, 9, 9, 2, 2, 10, 10, 1, 1, 11, 11, 12, 12, 4, 4, 13, 13, 5, 5, 14, 14, 6, 6], [2, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0]],
       names=['ticker', 'field'])

如果无法删除multiIndex,至少我需要根据列名重新排序列。我尝试了上面的代码重新排序,但它无法正常工作。 任何人都可以帮助我

附加输入Iconize

1 个答案:

答案 0 :(得分:1)

打印(DF)

Out[35]: 
user_id  a     s      
session  b  b  C  b  C
revenue -1  0  1  2  1

OP1

df.columns=df.columns.map('_'.join)
df
Out[37]: 
         a_b  a_b  s_C  s_b  s_C
revenue   -1    0    1    2    1

Op2中

df.T.reset_index()
Out[41]: 
  user_id session  revenue
0       a       b       -1
1       a       b        0
2       s       C        1
3       s       b        2
4       s       C        1

然后执行以下需要的计算

数据输入:

df = pd.DataFrame({'user_id':['a','a','s','s','s'],
                    'session':['b','b','C','b','C'],
                    'revenue':[-1,0,1,2,1]})
df=df.set_index(['user_id','session']).T