将2行连接成标题/列名称

时间:2018-03-28 18:18:28

标签: python python-3.x pandas

我有一张excel表,格式很差。我想要使​​用的实际列名是两行;例如,如果正确的列名称应为Labor Percent,则单元格A1将包含Labor,而单元格A2将包含Percent。)

我尝试加载文件,这就是我正在做的事情:

import os
os.getcwd()
os.chdir(r'xxx')

import pandas as pd

file = 'problem.xls'
xl = pd.ExcelFile(file)
print(xl.sheet_names)

df = xl.parse('WEEKLY NUMBERS', skiprows=35)

enter image description here

正如您在图片中看到的那样,列名称的其余部分位于第二行。有没有办法通过连接重命名列?这可以通过header=位中的xl.parse参数以某种方式完成吗?

2 个答案:

答案 0 :(得分:2)

您可以通过设置:

自行重命名列
df.columns = ['name1', 'name2', 'name3' ...]

请注意,您必须为每列指定一个名称。

然后删除第一行以清除不需要的列名称行。

df = df.drop(0)

答案 1 :(得分:0)

这是你可以尝试的东西。本质上,它将前两行作为标题读入,但将其视为分层多索引。然后,下面的第二行代码将多索引展平为单个字符串。我不是100%肯定它会对你的数据起作用,但是值得一试 - 它适用于我尝试过的小型虚拟测试数据:

setAdapter

第二行取自关于展平多指数的this答案。