看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
在 pandas 中,读取包含合并单元格的 Excel 表头需要一些额外的处理步骤。根据实际情况,你可能需要调整代码以适应不同的表格结构和合并单元格的处理方式。
我们的 Excel 如下(下载Excel附件):
它的表头占两行,其中最后两列有两层,我们在读取数据时需要将它们变成销售人数和销售金额。
使用 pd.read_excel() 的 header 参数指定两行为表头,它是一个多层索引,每个列为一个元组,读取后会发现被合并的单元格会被 Unnamed:xxx
字样占位。
然后用 map 方法来一一处理通过判断来去掉包含 Unnamed
字符串,再将剩下的合并起来。
在给定的代码中,使用 pd.read_excel() 函数读取名为 "header-merged.xlsx" 的 Excel 文件,并将表头读取为多级索引。
import pandas as pd
df = pd.read_excel('header-merged.xlsx', header=[0, 1])
df
'''
时间 播放量 销售
Unnamed: 0_level_1 Unnamed: 1_level_1 人数 金额
0 2023-06-03 10:00:00 3131 23 645
1 2023-06-03 11:00:00 5234 14 634
2 2023-06-03 12:00:00 12351 45 523
'''
df.columns
'''
MultiIndex([( '时间', 'Unnamed: 0_level_1'),
('播放量', 'Unnamed: 1_level_1'),
( '销售', '人数'),
( '销售', '金额')],
)
'''
通过将 header 参数设置为 [0, 1],指示 read_excel() 函数将文件的第一行和第二行作为表头,并将它们作为多级索引。这样做可以正确地处理包含合并单元格的表头。
请确保将 "header-merged.xlsx" 替换为你实际的文件路径和文件名。读取后的数据将存储在变量 df 中。你可以使用 df.head() 或 print(df) 来查看读取的数据及其表头。
cols = df.columns.map(lambda x: ''.join('' if 'Unnamed' in i else i for i in x))
cols
# Index(['时间', '播放量', '销售人数', '销售金额'], dtype='object')
以上代码的逻辑如下:
最终,cols 变量为处理后的索引对象。
接下来,对列索引重新赋值:
df.columns = cols
df
'''
时间 播放量 销售人数 销售金额
0 2023-06-03 10:00:00 3131 23 645
1 2023-06-03 11:00:00 5234 14 634
2 2023-06-03 12:00:00 12351 45 523
'''
这样就变成一行表头(索引)了,我们就实现了需求。
(完)
更新时间:2024-08-18 16:17:14 标签:pandas python excel 表头