gpt4 book ai didi

python - 当第一列为空时,Pandas 读取具有多个标题的 Excel 工作表

转载 作者:行者123 更新时间:2023-11-30 22:14:34 28 4
gpt4 key购买 nike

我有一个像这样的 Excel 工作表:

Excel sheet

我想用 pandas read_excel 阅读它,我尝试了这个:

df = pd.read_excel("test.xlsx", header=[0,1])

但它引发了我这个错误:

ParserError: Passed header=[0,1] are too many rows for this multi_index of columns

有什么建议吗?

最佳答案

如果您不介意在阅读 Excel 后修改 DataFrame,您可以尝试以下两种方法:

>>> pd.read_excel("/tmp/sample.xlsx", usecols = "B:F", skiprows=[0])
header1 Unnamed: 1 Unnamed: 2 header2 Unnamed: 4
0 col1 col2 col3 col4 col5
1 a 0 x 3 d
2 b 1 y 4 e
3 c 2 z 5 f

在上面,您必须修复 MultiIndex 的第一级,因为 header1 和 header2 是合并单元格

>>> pd.read_excel("/tmp/sample.xlsx", header=[0,1], usecols = "B:F", 
skiprows=[0])
header1 header2
header1 col1 col2 col3 col4
a 0 x 3 d
b 1 y 4 e
c 2 z 5 f

在上面,通过跳过空行并仅解析包含数据的列(B:F),它已经非常接近了。如果您注意到,列已经移动了......

注意不是一个干净的解决方案,只是想在帖子而不是评论中与您分享示例

-- 根据与 OP 的讨论进行编辑 --

Based on documentation for pandas read_excel , header[1,2] 正在为您的列创建 MultiIndex。看起来它根据 A 列中填充的内容确定 DataFrame 的标签。因为那里什么都没有......索引有一堆 Nan 像这样

>>> pd.read_excel("/tmp/sample.xlsx", header=[1,2])
header1 header2
col1 col2 col3 col4 col5
NaN a 0 x 3 d
NaN b 1 y 4 e
NaN c 2 z 5 f

如果您同意清理列并且 xlsx 的第一列始终为空...您可以像下面这样删除它。希望这就是您正在寻找的内容。

>>> pd.read_excel("/tmp/sample.xlsx", header[1,2]).reset_index().drop(['index'], level=0, axis=1)
header1 header2
col1 col2 col3 col4 col5
0 a 0 x 3 d
1 b 1 y 4 e
2 c 2 z 5 f

关于python - 当第一列为空时,Pandas 读取具有多个标题的 Excel 工作表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50472696/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com