如何展平Pandas MultiIndex列名并去除末尾多余下划线
你遇到的报错是因为 pandas 中的 Index 对象没有 apply 方法,对 Index 中的字符串做处理需要用 .str 系列方法,或者直接在 map 中完成全部逻辑。
实现代码
你可以在列层级合并后链式调用 str.rstrip('_') 直接清理末尾的多余下划线,一步得到目标结果:
# 展平列名同时清理末尾下划线 df.columns = df.columns.map('_'.join).str.rstrip('_') df.reset_index(inplace=True)
如果你的列层级里空值比较多,更推荐直接在拼接阶段过滤空字符串,从根源避免产生多余下划线:
# 拼接时直接忽略空层级,不会产生多余下划线 df.columns = df.columns.map(lambda level_vals: '_'.join([v for v in level_vals if v])) df.reset_index(inplace=True)
两种写法运行后都能得到你预期的列名:Index、data1_F、data2_K、data3。
内容的提问来源于stack exchange,提问作者Alexander
相关产品推荐
相关产品推荐

