我有一个 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 列,效果很好。
我在这里缺少什么?
问题归结为索引列。 Pandas 确实保留了列的顺序,只是第一列用于索引。
您可以通过指定要使用的列来解决此问题
usecols
:
df = pd.read_excel("myfile.xlsx", sheet_name="mysheet", engine="openpyxl", header=None, names=list("AB"), usecols="A:B")