将数据帧df导出到dat文件时,如何删除文件中的None或numpy.nan?我只需要一个空值。
df.to_csv('test.dat')
我试过了:
df = df.fillna('')
或
df = df.replace(numpy.nan, '') and df = df.replace(None, '')
但我仍然在csv或dat文件中看到'None'或'nan'。
答案 0 :(得分:3)
使用参数
na_rep:string,默认为“缺少数据表示”
并将其设为“”
你可以在这里阅读:
这是代码:
file=pd.DataFrame({"one":[1,2,None,3,4],"two":[5,6,7,np.nan,8]})
file.to_csv("xxxxxxx",na_rep="")
答案 1 :(得分:0)
我找到了解决自己问题的方法:
df = df.replace('None','')
df = df.replace('nan','')
很明显,pandas在这里将None和numpy.nan视为字符串值。不知道为什么但这个解决方案有效。
答案 2 :(得分:0)
请在这里评论OP mentioned in his accepted answer的内容,以防其他人偶然发现。
"It is clear that somehow pandas treat None and numpy.nan as string value here. Not sure why but this solution works.
“
这是不正确的,并且发生的事情是原始df的列设置为字符串,或者仅“ None”和“ Nan”值设置为字符串。否则,first_answer将与.replace(np.nan,'')
一起使用。
df=pd.DataFrame({
'na_string':[1,2,'nan'],
'na':[1,2,np.nan],
'none_string':[1,2,'None'],
'none':[1,2,None],
'na_float':[1.1,1.2,np.nan],
'mixed':[1.1,1.2,'nan']})
df
df.dtypes
#na_string object
#na float64
#none_string object
#none float64
#na_float float64
#mixed object
#dtype: object
现在请注意,当该列被分类为object
时,所有na
和None
都不是np.nan
,因为它们是字符串。
当您使用df.to_csv(path+'out.csv', na_rep='', index=False)
甚至使用na_rep
导出它们时,将保留所有字符串,但不保留实际的np.nan
或其他空值。
如果您用np.nan
替换了字符串,那么您也可以到达那里:
df.replace('None',np.nan, inplace=True)
df.replace('nan',np.nan, inplace=True)
df.to_csv(path+'out2.csv', na_rep='', index=False)