使用pandas函数将multiindex名称转换为列?

时间:2020-07-15 02:39:54

标签: python pandas

说我有一个像这样的数据框:

enter image description here

我知道我可以降低等级,以便获得专栏:['Season','Players','Teams']。熊猫中是否有一个函数可以将“第一支球队”的名称折叠到一列中,以便整个列都显示“第一支球队”?

1 个答案:

答案 0 :(得分:5)

IIUC,您可以做一些不同的事情,这有两种方法:

伪数据帧,

df = pd.DataFrame(np.random.randint(0,100,(5,3)),
                 columns = pd.MultiIndex.from_tuples([('Season', 'Season'), 
                                                      ('First team', 'Players'), 
                                                      ('First team', 'Teams')]))

输入虚拟数据帧:

  Season First team      
  Season    Players Teams
0     28         41    53
1     62         87    87
2     43         94     4
3     23         12    93
4     14         43    62

然后使用droplevel

df = df.droplevel(0, axis=1)

输出:

   Season  Players  Teams
0      54       94     19
1      54       47     91
2      56       35     40
3      37       68     14
4      17       78     68

或使用列表理解功能flatten multiindex column header

df.columns = [f'{i}_{j}' for i, j in df.columns]
#Also, can use df.columns = df.columns.map('_'.join)
df

输出:

   Season_Season  First team_Players  First team_Teams
0             54                  94                19
1             54                  47                91
2             56                  35                40
3             37                  68                14
4             17                  78                68