小编典典

用None替换Pandas或Numpy Nan以与MysqlDB一起使用

python

我正在尝试使用MysqlDB将Pandas数据帧(或可以使用numpy数组)写入mysql数据库。MysqlDB似乎不理解’nan’,我的数据库抛出一个错误,说nan不在字段列表中。我需要找到一种将’nan’转换为NoneType的方法。

有任何想法吗?


阅读 216

收藏
2020-12-20

共1个答案

小编典典

@bogatron正确,您可以使用 where ,值得注意的是您可以在熊猫本机执行此操作:

df1 = df.where(pd.notnull(df), None)

注意:这会将 所有列 的dtype更改为object

例:

In [1]: df = pd.DataFrame([1, np.nan])

In [2]: df
Out[2]: 
    0
0   1
1 NaN

In [3]: df1 = df.where(pd.notnull(df), None)

In [4]: df1
Out[4]: 
      0
0     1
1  None

注意:您不能做的事情dtype是使用 astype ,然后使用DataFrame
fillna

方法来重铸DataFrame以允许所有数据类型类型:

df1 = df.astype(object).replace(np.nan, 'None')

遗憾的是这个没有,也没有使用 replace
,用作品None这个(关闭)的问题


顺便说一句,值得注意的是,对于大多数用例,您不需要将NaN替换为None,请参阅有关
熊猫中NaN和None之间的区别的
问题。

但是,在这种特定情况下,您似乎可以这样做(至少在回答此问题时)。

2020-12-20