熊猫读错专栏

时间:2019-01-31 11:28:02

标签: python python-3.x pandas csv

我有一个csv文件,其中包含列句子,长度,类别和另外18列。我正在尝试过滤掉特定的列。

假设我的x,y,a,b,c,d,e,f,g,h为最后10列。我正在尝试过滤长度,类别和最后八列。

当我仅对最后8列这样做时,

col_req = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
data = pd.read_csv('data.csv', names=col_req)

它运行良好。但是当我尝试时,

col_req = ['length','category','a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
data = pd.read_csv('data.csv', names=col_req) 

输出为

('g','h','x','y','a','b','c','d','e','f')

我不知道我要去哪里。

3 个答案:

答案 0 :(得分:2)

您需要使用参数use_cols来完成

 col_req = ['length','category','a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
 data = pd.read_csv('data.csv', use_cols=col_req) 

答案 1 :(得分:0)

选中此answer。可能是col_names不正确

df = pd.read_csv('data.csv', skipinitialspace=True, usecols=fields)

答案 2 :(得分:0)

  

我正在尝试过滤长度,类别和最后八列。

如果要通过基于标签和整数位置索引的组合进行过滤,则可以先读取列标签,计算所需的标签,然后在读取数据时使用结果:

# use nrows=0 to only read in column labels
cols_all = pd.read_csv('data'.csv, nrows=0).columns
cols_req = ['length', 'category'] + cols_all[-8:].tolist()

# use use_cols parameter to filter by specified labels
df = pd.read_csv('data.csv', use_cols=cols_req)

当然,这假设您的标签是唯一的。