如何在特定级别为多索引列添加前缀?

Flo*_*oor 5 python multi-index pandas

假设我有一个数据框

micolumns = pd.MultiIndex.from_tuples([('a', 'foo'), ('a', 'bar'),
                                       ('b', 'foo'), ('b', 'bah')])

miindex=np.arange(3)
dfmi = pd.DataFrame(np.arange(3 * len(micolumns)).reshape((len(miindex), len(micolumns))),
                     index=miindex, columns=micolumns).sort_index().sort_index(axis=1)

  a       b    
  bar foo bah foo
0   1   0   3   2
1   5   4   7   6
2   9   8  11  10
Run Code Online (Sandbox Code Playgroud)

我想在零级的列中添加前缀,我该怎么做?

目前我正在重命名如下列,感觉多余。

df_new = dfmi.rename(columns=dict(zip(dfmi.columns.levels[0],'pre_'+dfmi.columns.levels[0])),level=0) 

    pre_a     pre_b    
    bar foo   bah foo
0     1   0     3   2
1     5   4     7   6
2     9   8    11  10
Run Code Online (Sandbox Code Playgroud)

add_prefix函数没有级别参数。有没有类似的功能?

Qua*_*ang 7

一个快速的方法是:

dfmi.columns = pd.MultiIndex.from_tuples([(f'pre_{a}',b) for a,b in dfmi.columns])
Run Code Online (Sandbox Code Playgroud)

renamemapper

dfmi.rename(mapper=lambda x: f'pre_{x}', 
            axis='columns',
            level=0,
            inplace=True)
Run Code Online (Sandbox Code Playgroud)