我已导入csv文件,其中包含“Country”,“Commodity”,“Attribute”,“Value”列到数据帧。 “Country”的值为“NA”,而dataframe认为为空白。
然后我正在更新''NA''
data['Country_Code'].fillna('"NA"', inplace=True)
然后我在数据中做一些计算,最后将导出整个文件。
对于国家/地区“NA”,我将从导出的文件中手动删除。
如何将'“NA”'导出为NA,我不想手动操作,因为文件包含200万条记录。
答案 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