如何使用Pandas-Python从Excel中读取某些列

Ana*_*Ana 20 python numpy dataframe pandas

我正在阅读Excel工作表,我想读取某些列:第0列,因为它是行索引,第22:37列.现在我正在做的事情:

import pandas as pd
import numpy as np
file_loc = "path.xlsx"
df = pd.read_excel(file_loc, index_col=None, na_values=['NA'], parse_cols = 37)
df= pd.concat([df[df.columns[0]], df[df.columns[22:]]], axis=1)
Run Code Online (Sandbox Code Playgroud)

但我希望有更好的方法来做到这一点!我知道如果我parse_cols=[0, 22,..,37]能这样做,但对于大型数据集,这没有意义.

我也这样做了:

s = pd.Series(0)
s[1]=22
for i in range(2,14):
    s[i]=s[i-1]+1
df = pd.read_excel(file_loc, index_col=None, na_values=['NA'], parse_cols = s)
Run Code Online (Sandbox Code Playgroud)

但它读取前15列的长度s.

Mar*_*cka 25

你可以像这样使用列索引(字母):

import pandas as pd
import numpy as np
file_loc = "path.xlsx"
df = pd.read_excel(file_loc, index_col=None, na_values=['NA'], usecols = "A,C:AA")
print(df)
Run Code Online (Sandbox Code Playgroud)

相应文件:

parse_cols:int或list,默认为None

  • 如果为None则解析所有列,
  • 如果int则表示要解析的最后一列
  • 如果int列表则表示要解析的列号列表
  • 如果string则表示以逗号分隔的列名和列范围列表(例如"A:E"或"A,C,E:F")

  • 应该注意的是,"名称"应该被理解为"excel中的名称",而不是您可以选择或用作标题的名称.文档对此并不清楚,但值得一提,它让我有些头疼. (8认同)

Leo*_*oli 14

parse_cols已弃用,请usecols改用

那是:

df = pd.read_excel(file_loc, index_col=None, na_values=['NA'], usecols = "A,C:AA")
Run Code Online (Sandbox Code Playgroud)


小智 10

如果您知道列的名称并且不想使用 A、B、D 或 0、4、7。这实际上有效

df = pd.read_excel(url)[['name of column','name of column','name of column','name of column','name of column']]
Run Code Online (Sandbox Code Playgroud)

其中“列名称”= 想要的列。区分大小写和空格


Uda*_*ran 8

“usecols”应该会有所帮助,使用列范围(根据excel工作表,A,B...等)下面是示例

1. 选定的列

df = pd.read_excel(file_location,sheet_name='Sheet1', usecols="A,C,F")
Run Code Online (Sandbox Code Playgroud)

2. 列的范围和选择的列

df = pd.read_excel(file_location,sheet_name='Sheet1', usecols="A:F,H")
Run Code Online (Sandbox Code Playgroud)

3. 多个范围

df = pd.read_excel(file_location,sheet_name='Sheet1', usecols="A:F,H,J:N")
Run Code Online (Sandbox Code Playgroud)

4. 列范围

df = pd.read_excel(file_location,sheet_name='Sheet1', usecols="A:N")
Run Code Online (Sandbox Code Playgroud)