【发布时间】:2016-02-12 19:32:36
【问题描述】:
我正在从 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)
但我希望有更好的方法来做到这一点!我知道如果我这样做 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)
但它读取的前 15 列是 s 的长度。
【问题讨论】:
-
您必须生成一个列列表并将其传递给
parse_cols,例如parse_cols=[0, 22,23,24.....,37]而不是你现在在做什么 -
不知道为什么这不起作用,这可能是一个错误,当你传递一个硬编码列表时会发生什么:
df = pd.read_excel(file_loc, index_col=None, na_values=['NA'], parse_cols = [0,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37)? -
@EdChum,如果通过硬编码列表,它可以工作。
-
在这种情况下生成一个列表而不是一个系列
标签: python numpy pandas dataframe