熊猫跳过列
我正在使用熊猫遍历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
的。
假设你有列[ 'A', 'B', 'C', 'd', 'E']和4行,使得数据帧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
希望ŧ他的帮助!
没有阅读csv,我怎么知道我有什么列? –
用于将csv读取为数据帧使用pandas命令,如下所示: 将pandas导入为pd df = pd.read_csv(pathtofile) 然后执行上述步骤 – Somit
即问题所在。当我使用read_csv读取csv时,它抛出了上面提到的错误。 –
如果你知道你有多少列。 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
我不知道我有多少列。它可以不同。我无法手动读取csv,每次输入静态列数。 –
请问您能分享一个您的数据的例子吗? – MedAli
我已经更新了问题本身。请看一看。 –