以下是我的数据,我正在尝试访问一个列。它工作正常,直到昨天,但现在我不确定我做错了什么:
DISTRICT;CPE;EQUIPMENT,NR_EQUIPM
0 47;CASTELO BRANCO;17520091VM;101
1 48;CASTELO BRANCO;17520103VV;160
2 49;CASTELO BRANCO;17520103VV;160
当我尝试这个时,它给了我一个错误:
df = pd.read_csv(archiv, sep=",")
df['EQUIPMENT']
ERROR:
KeyError:'设备'
我也在尝试这个,但也不起作用:
df.EQUIPMENT
ERROR:
AttributeError:' DataFrame'对象没有属性'设备'
BTW,我正在使用:
Python 2.7.12 | Anaconda 4.1.1(32位)| (默认2016年6月29日, 11:42:13)[MSC v.1500 32 bit(Intel)]
有什么想法吗?
答案 0 :(得分:2)
您需要将sep更改为;
,因为csv
中的分隔符已更改:
df = pd.read_csv(archiv, sep=";")
如果检查列的最后一个分隔符,则,
,因此您可以使用两个分隔符 - ;,
,但必须添加参数engine='python'
,因为警告:
ParserWarning:回退到'python'引擎,因为'c'引擎不支持正则表达式分隔符(分隔符> 1个字符,不同于'\ s +'被解释为正则表达式);您可以通过指定engine ='python'来避免此警告。 对于index,df.iterrows()中的行:
样品:
import pandas as pd
import io
temp=u"""DISTRICT;CPE;EQUIPMENT,NR_EQUIPM
47;CASTELO BRANCO;17520091VM;101
48;CASTELO BRANCO;17520103VV;160
49;CASTELO BRANCO;17520103VV;160"""
#after testing replace io.StringIO(temp) to filename
df = pd.read_csv(io.StringIO(temp), sep="[;,]", engine='python')
print (df)
DISTRICT CPE EQUIPMENT NR_EQUIPM
0 47 CASTELO BRANCO 17520091VM 101
1 48 CASTELO BRANCO 17520103VV 160
2 49 CASTELO BRANCO 17520103VV 160