如何跳过Pandas DataFrame索引列名上方行及设置列名为单行
问题1:跳过DataFrame索引列名称上方的行
直接在读取数据阶段通过参数控制即可,举两个常用场景的实现方法:
- 若已知列名上方有固定行数的无效内容,用
skiprows参数跳过:import pandas as pd df = pd.read_csv('你的文件路径.csv', skiprows=2) # 跳过前2行,从第3行开始读取列名和数据 - 若明确知道列名所在的行号(从0开始计数),用
header参数指定列名行:df = pd.read_csv('你的文件路径.csv', header=1) # 将第2行设为列名,自动跳过上方所有行
问题2:将所有列名设置在同一行
这种情况大多是读取数据时生成了多级列名(MultiIndex),直接单列重命名无效,需要合并多级列名:
- 先确认列名类型:运行
print(df.columns),若输出类似MultiIndex([('列1', '子列1'), ('列2', '子列2')],),就是多级列名 - 合并为单行列名,示例用下划线连接各级名称:
不需要连接符的话,直接拼接即可:df.columns = ['_'.join(str(col) for col in col_group).strip() for col_group in df.columns]df.columns = [''.join(str(col) for col in col_group).strip() for col_group in df.columns] - 未读取数据前提前规避:读取时不要设置
header为列表(比如header=[0,1]),直接指定唯一的列名行号,比如header=2,就能直接得到单行列名
内容的提问来源于stack exchange,提问作者Giga Chochnidze
相关产品推荐
相关产品推荐

