如何处理数据帧列值“NA”,Python 3.6

时间:2017-09-13 13:47:48

标签: python python-3.x pandas

我已导入csv文件,其中包含“Country”,“Commodity”,“Attribute”,“Value”列到数据帧。 “Country”的值为“NA”,而dataframe认为为空白。

然后我正在更新''NA''

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

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

对于国家/地区“NA”,我将从导出的文件中手动删除。

如何将'“NA”'导出为NA,我不想手动操作,因为文件包含200万条记录。

1 个答案:

答案 0 :(得分: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

写入文件:

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