我正在尝试使用MysqlDB将Pandas数据帧(或者可以使用numpy数组)写入mysql数据库。MysqlDB似乎不理解“nan”,我的数据库抛出一个错误,说nan不在字段列表中。我需要找到一种方法将“nan”转换为非类型
有什么想法吗
@bogatron是正确的,您可以在其中使用,值得注意的是,您可以在熊猫中以本机方式执行此操作:
df1=df.where(pd.notnull(df),无)
注意:这会将所有列的数据类型更改为对象
例如:
[1]on
:df=pd.DataFrame([1,np.nan])
In[2]:df
Output[2]:
0
0 1
1楠
[3]on:df1=df.where(pd.notnull(df),None)
In[4]:df1
Output[4]:
0
0 1
1无
注意:您不能使用astype,然后使用DataFrame<fillna方法,重铸数据帧dtype以允许所有数据类型:
df1=df.astype(object).replace(np.nan,'None')
不幸的是,无论是这一点,还是使用替换,都不能与无一起使用请参阅此(已关闭)问题。
另一方面,值得注意的是,对于大多数用例,您不需要将NaN替换为None,请参阅关于pandas中NaN和None之间的差异的问题
然而,在这种特殊情况下,您似乎是这样做的(至少在回答这个问题时是这样)