我认为你需要在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
na_rep = 'NA',而导出正确的?有没有什么参数pd.read_csv –
是进口,而通过,但默认情况下是NA '将被读作'NaN'。但是如果需要另一个字符串,则需要[this]设置它(http://pandas.pydata.org/pandas-docs/stable/io.html#na-values)。 – jezrael
谢谢,会检查 –