将Pandas或Numpy Nan替换为None以用于MysqlDB

我正在尝试使用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之间的差异的问题

然而,在这种特殊情况下,您似乎是这样做的(至少在回答这个问题时是这样)

发表评论