我有一个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')
我不知道我要去哪里。
答案 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)
当然,这假设您的标签是唯一的。