2016-07-06 43 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

添加參數na_values='?'read_csv

樣品:

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 = 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