我正在使用df并使用numpy来转换数据 - 包括将空白(或'')设置为NaN。但是当我把df写入csv时 - 输出包含字符串'nan'而不是NULL。
我环顾四周但找不到可行的解决方案。这是基本问题:
df
index x y z
0 1 NaN 2
1 NaN 3 4
CSV输出:
index x y z
0 1 nan 2
1 nan 3 4
我尝试了一些东西将'nan'设置为NULL,但csv输出导致'空'而不是NULL:
dfDemographics = dfDemographics.replace('nan', np.NaN)
dfDemographics.replace(r'\s+( +\.)|#', np.nan, regex=True).replace('',
np.nan)
dfDemographics = dfDemographics.replace('nan', '') # of course, this wouldn't work, but tried it anyway.
任何帮助,将不胜感激。
拯救熊猫,使用na_rep
来修复你自己的NaNs表示。
df.to_csv('file.csv', na_rep='NULL')
file.csv
,index,x,y,z
0,0,1.0,NULL,2
1,1,NULL,3.0,4
使用df.replace可能会有所帮助 -
df = df.replace(np.nan, '', regex=True)
df.to_csv("df.csv", index=False)
(这会将所有空值设置为'',即空字符串。)
用户@coldspeed说明了在保存pd.DataFrame时如何用NULL替换nan值。如果对于数据分析,有兴趣用np.NaN值替换pd.DataFrame中的“NULL”值,以下代码将执行:
import numpy as np, pandas as pd
# replace NULL values with np.nan
colNames = mydf.columns.tolist()
dfVals = mydf.values
matSyb = mydf.isnull().values
dfVals[matSyb] = np.NAN
mydf = pd.DataFrame(dfVals, columns=colNames)
#np.nansum(mydf.values, axis=0 )
#np.nansum(dfVals, axis=0 )