使用熊猫函数将多索引名称转换为列?

ang*_*xis 0 python pandas

假设我有一个这样的数据框:

在此处输入图片说明

我知道我可以降低级别,以便我有列:['Season', 'Players', 'Teams']。熊猫中是否有一个功能可以将“第一队”名称折叠到一列中,以便整个列都显示“第一队”?

Sco*_*ton 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')]))
Run Code Online (Sandbox Code Playgroud)

输入虚拟数据帧:

  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
Run Code Online (Sandbox Code Playgroud)

然后使用droplevel

df = df.droplevel(0, axis=1)
Run Code Online (Sandbox Code Playgroud)

输出:

   Season  Players  Teams
0      54       94     19
1      54       47     91
2      56       35     40
3      37       68     14
4      17       78     68
Run Code Online (Sandbox Code Playgroud)

或者使用列表理解来展平多索引列标题

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

输出:

   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
Run Code Online (Sandbox Code Playgroud)