2016-07-06 9 views
3

私が所有しているデータでは、一部の機能値は?です。 NAと交換するにはどうすればよいですか?パンダ:列に特殊文字を含むファイルを読み取る

EDIT

コードと出力は以下の通りです:

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 

EDIT:

skipinitialspace=Trueを追加提案のためにあなた'shivsn'ありがとう:

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 = pd.read_csv(" train.csv "、header = None、na_values = '?')' df.ixの出力は '0 'です。まだ表示されていますか? –

+0

'? 'のみありますか?多少のスペースがあるかもしれません。 – jezrael

+1

'skipintialspace = True'を追加してみてください。 – shivsn

1

は、ファイル使用replace読んだ後:

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

これはうまくいきません。私はコードと出力を提供しました。 –

+0

私は答えを更新しました。 – shivsn

関連する問題