我有一张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)
正如您在图片中看到的那样,列名称的其余部分位于第二行。有没有办法通过连接重命名列?这可以通过header=
位中的xl.parse
参数以某种方式完成吗?
答案 0 :(得分:2)
您可以通过设置:
自行重命名列df.columns = ['name1', 'name2', 'name3' ...]
请注意,您必须为每列指定一个名称。
然后删除第一行以清除不需要的列名称行。
df = df.drop(0)
答案 1 :(得分:0)
这是你可以尝试的东西。本质上,它将前两行作为标题读入,但将其视为分层多索引。然后,下面的第二行代码将多索引展平为单个字符串。我不是100%肯定它会对你的数据起作用,但是值得一试 - 它适用于我尝试过的小型虚拟测试数据:
setAdapter
第二行取自关于展平多指数的this答案。