在pandas DF中选择Columns

时间:2016-09-21 08:43:14

标签: python csv pandas multiple-columns separator

以下是我的数据,我正在尝试访问一个列。它工作正常,直到昨天,但现在我不确定我做错了什么:

    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)]

有什么想法吗?

1 个答案:

答案 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