You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将DataFrame的列标题转换为指定样式?

解决多级列标题扁平化问题

你的需求是将DataFrame的多级索引(MultiIndex)列标题合并为单层复合列名,以下是具体实现方法:

核心实现代码

如果需要用.连接各级标题(如示例中的A.x、B.y格式),直接执行:

import pandas as pd

# 假设你的DataFrame名为df
df.columns = df.columns.map('.'.join)

如果偏好其他连接符(比如下划线_),替换.即可:

df.columns = df.columns.map('_'.join)

处理含空值的多级列

如果多级列标题存在空值(部分层级无名称),可以先过滤空值再合并:

df.columns = df.columns.map(lambda x: '.'.join([item for item in x if item]))

示例演示

模拟原始多级列DataFrame并验证效果:

# 构造示例数据
data = [[1,2,3,4,5,6], [7,8,9,10,11,12]]
df = pd.DataFrame(
    data,
    columns=pd.MultiIndex.from_tuples([('A', 'x'), ('A', 'y'), ('A', 'z'), ('B', 'x'), ('B', 'y'), ('B', 'z')])
)

print("原始列标题:")
print(df.columns)
# 输出:MultiIndex([('A', 'x'), ('A', 'y'), ('A', 'z'), ('B', 'x'), ('B', 'y'), ('B', 'z')], )

# 扁平化处理
df.columns = df.columns.map('.'.join)

print("\n处理后列标题:")
print(df.columns)
# 输出:Index(['A.x', 'A.y', 'A.z', 'B.x', 'B.y', 'B.z'], dtype='object')

内容的提问来源于stack exchange,提问作者Aamir Mohiuddin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 16:25:21