2016-07-06 10 views
3

내가 가지고있는 데이터에서 일부 기능 값은 ?입니다. 어떻게하면 NA으로 바꿀 수 있습니까?팬더 : 열에 특수 문자가있는 파일 읽기

편집

코드와 출력은 다음과 같습니다 :

df = pd.read_csv("cca-census-income.csv", header = None) 

df.replace('?', np.nan, inplace=True) 

df.ix[0,] 

23    Other relative of householder 
24          1700.09 
25           ? 
26           ? 
27           ? 
28    Not in universe under 1 year old 
29           ? 
30           0 

답변

3

추가 매개 변수 read_csv-na_values='?'.

샘플 :

import pandas as pd 
import io 


temp=u"""Date Time,a 
2010-01-27 16:00:00,? 
2010-01-27 16:10:00,2.2 
2010-01-27 16:30:00,1.7""" 

df = pd.read_csv(io.StringIO(temp),na_values='?') 
print (df) 
      Date Time a 
0 2010-01-27 16:00:00 NaN 
1 2010-01-27 16:10:00 2.2 
2 2010-01-27 16:30:00 1.7 

편집 :

이 제안에 대한 'shivsn' 감사합니다 skipinitialspace=True을 추가

temp=u"""Date Time,a 
? , ? 
? ,? 
2010-01-27 16:30:00,1.7""" 

df = pd.read_csv(io.StringIO(temp),na_values=['?', '? '], skipinitialspace =True) 
print (df) 
      Date Time a 
0     NaN NaN 
1     NaN NaN 
2 2010-01-27 16:30:00 1.7 

EDIT1 파일에 의해 : 전에 만 space이 같은

같습니다 ? :

df = pd.read_csv('census-income.data', 
       header = None, 
       na_values=['?'], 
       skipinitialspace =True) 
print (df) 
+0

나는이 시도를하지만이 작동하지 않습니다. 출력은'df.ix [0,]'은 여전히'? '를 보여줍니다. –

+0

'?'만 있습니까?'df = pd.read_csv ("train.csv", header = None, na_values ​​='? ' 어딘가에 공간이있을 수 있습니다. – jezrael

+1

'skipintialspace = True'를 추가하십시오. – shivsn

1

파일을 사용 replace 읽은 후 :

df.repalce('.?',np.nan,inplace=True,regex=True) 
+0

이것은 잘 작동하지 않습니다. 나는 방금 코드와 출력을 제공했다. –

+0

시도 답변을 업데이트했습니다. – shivsn