Skip to main content
 首页 » 编程设计

python之如何通过 Pandas 中的方法/表达式展平 MultiIndex

2024年10月01日12sky-heaven

我想将分层的 MultiIndex 展平为平面索引

理论上,分配给 df1.columns 可以完成这些工作,但是我想知道是否有使用 lambda 的方法调用来做到这一点?!这将使管道编程更好。

import numpy as np 
import pandas as pd 
 
df = pd.DataFrame(np.random.normal(size=(10,2)), columns=list("ab")) 
df1 = (df 
       .rolling(2) 
       .agg(["min", "max"]) 
      ) 
df1.columns = df1.columns.map("{0[0]}_{0[1]}".format) 
df1 

我能否用 lambda 替换方法调用中的列 - 因此在大括号内(但比使用 pipe 的 Python 函数更好)?

请您参考如下方法:

df.rolling(2).agg(["min", "max"]).T.apply( 
    lambda x: 
        x.append(pd.Series(dict(new='_'.join(x.name)))), 
    1).set_index('new').rename_axis(None).T