csv Pandas跳过一列

6jjcrrmo  于 2022-12-06  发布在  其他
关注(0)|答案(2)|浏览(139)

我正在使用panda遍历一个csv。csv是不均匀的,即一些额外的列(在一些行)没有标题。我得到这个错误

pandas.errors.ParserError: Error tokenizing data. C error: Expected 11 fields in line 8, saw 12

我读了一些解决方案,但其中一些是跳过整个行和其他建议手动调整。我不能负担两者。我需要一个方法,可以删除额外的列保持行的其余部分。
这是数据的例子

Country    Phone         Fax    
Germany 030-0074321    030-0076545
Mexico  (5) 555-4729   (5) 555-3745
Mexico  (5) 555-3932    NULL
67000   France         88.60.15.31      88.60.15.32
28023   Spain          (91) 555 22 82   (91) 555 91 99

任何帮助都将不胜感激。

mo49yndu

mo49yndu1#

假设您有列[“A”、“B”、“C”、“D”、“E”]和4行, Dataframe df如下所示:

Row   A B C D`E
1     1`1 1 1 5 
2     0 2 0 0 
3     2 4 1 2 2
4     5 4 5 4

现在,如果要从第1行和第3行中删除额外的列“E”值,则只需创建另一个列表即可

features=df.columns
f=[]
for feature in features:
    if df[feature].notnull().all():
        f.append(feature)

df=df[f]
print df

因此,现在的输出为:

Row   A B C D`
1     1`1 1 1  
2     0 2 0 0 
3     2 4 1 2 
4     5 4 5 4

希望这对你有帮助!

lztngnrs

lztngnrs2#

如果你知道你有多少列。

data = pd.read_csv('data.csv',usecols=[0,1,2,3])

;[0,1,2,3 ...];是有内容列,否则您不知道

#enviroment -- python2.7

import pandas
data = pandas.read_csv("file.csv")
names = list(data)
for name in names:
    if "Unnamed" in name:
        data.pop(name)
print "result"
print data

相关问题