2017-09-13 56 views
-1

我已经导入了csv文件,其中列“Country”,“Commodity”,“Attribute”,“Value”为dataframe。 “国家”的值为“NA”,数据帧视为空白。如何处理数据帧列值“NA”,Python 3.6

然后我更新它的‘NA’'

data['Country_Code'].fillna('"NA"', inplace=True) 

然后我做一些数据的计算,最后将导出整个文件。

对于国家“‘NA’”,我将“从导出的文件手动。

如何导出‘‘删除NA’’为NA,我不想因为文件中包含的2millions做手工。记录

回答

1

我认为你需要在to_csv参数na_rep='NA',并删除fillna

样品:

df = pd.DataFrame({'A':list('abcdef'), 
        'B':[np.nan,5,4,5,5,4], 
        'C':[7,8,np.nan,4,2,3]}) 

print (df) 
    A B C 
0 a NaN 7.0 
1 b 5.0 8.0 
2 c 4.0 NaN 
3 d 5.0 4.0 
4 e 5.0 2.0 
5 f 4.0 3.0 

#test output 
print (df.to_csv(na_rep='NA')) 
,A,B,C 
0,a,NA,7.0 
1,b,5.0,8.0 
2,c,4.0,NA 
3,d,5.0,4.0 
4,e,5.0,2.0 
5,f,4.0,3.0 

对于写ŧ o文件:

df.to_csv('file', na_rep='NA', index=False) 

您还可以在read_csv使用参数keep_default_na,而是将所有的数据strings,不浮动。

df = pd.read_csv('file', keep_default_na=False) 
print (df) 
    A B C 
0 a NA 7.0 
1 b 5.0 8.0 
2 c 4.0 NA 
3 d 5.0 4.0 
4 e 5.0 2.0 
5 f 4.0 3.0 

print (df.dtypes) 
A object 
B object 
C object 
dtype: object 

默认NA读为NaN

df = pd.read_csv('file') 
print (df) 
    A B C 
0 a NaN 7.0 
1 b 5.0 8.0 
2 c 4.0 NaN 
3 d 5.0 4.0 
4 e 5.0 2.0 
5 f 4.0 3.0 

print (df.dtypes) 
A  object 
B float64 
C float64 
dtype: object 
+0

na_rep = 'NA',而导出正确的?有没有什么参数pd.read_csv –

+0

是进口,而通过,但默认情况下是NA '将被读作'NaN'。但是如果需要另一个字符串,则需要[this]设置它(http://pandas.pydata.org/pandas-docs/stable/io.html#na-values)。 – jezrael

+0

谢谢,会检查 –