如果列数少于工作表中的总列数,pandas read_excel 返回的列顺序错误

问题描述 投票:0回答:1

我有一个 xlsx 文件,其中包含 3 列。这就是我的 xlsx 文件的样子:

Items   Object          Information
Item1   Some Object     Some Information
Item2   Some Object     Some Information
Item3   Some Object     Some Information
Item4   Some Object     Some Information

当使用 pandas.read_excel 阅读本文时,根据我在

names
参数中传递的内容,我得到了错误的列顺序。

当我说

df_sheet = pd.read_excel("myfile.xlsx", 
                         sheet_name="mysheet", 
                         engine="openpyxl", 
                         header=None, 
                         names=list("ABC"))

我将项目列设为 A,对象列设为 B,信息列设为 C。

当我说

df_sheet = pd.read_excel("myfile.xlsx", 
                         sheet_name="mysheet", 
                         engine="openpyxl", 
                         header=None, 
                         names=list("AB"))

我将项目列设为 B,将对象列设为 A。

我的印象是 pandas 将保留列顺序,并通过在 read_excel 中传递

names
参数,我要求它将第一列命名为 A,第二列命名为 B,但由于某种原因,当我只读取 2 列时3 列的顺序不正确,但如果我读完所有 3 列,效果很好。

我在这里缺少什么?

python pandas openpyxl
1个回答
0
投票

问题归结为索引列。 Pandas 确实保留了列的顺序,只是第一列用于索引。

您可以通过指定要使用的列来解决此问题

usecols
:

df = pd.read_excel("myfile.xlsx", sheet_name="mysheet", engine="openpyxl", header=None, names=list("AB"), usecols="A:B")
© www.soinside.com 2019 - 2024. All rights reserved.