我正在尝试使用MysqlDB将Pandas数据帧(或可以使用numpy数组)写入mysql数据库。MysqlDB似乎不理解’nan’,我的数据库抛出一个错误,说nan不在字段列表中。我需要找到一种将’nan’转换为NoneType的方法。
有任何想法吗?
@bogatron正确,您可以使用 where ,值得注意的是您可以在熊猫本机执行此操作:
where
df1 = df.where(pd.notnull(df), None)
注意:这会将 所有列 的dtype更改为object。
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以允许所有数据类型类型:
dtype
astype
fillna
df1 = df.astype(object).replace(np.nan, 'None')
遗憾的是这个没有,也没有使用 replace ,用作品None看这个(关闭)的问题。
replace
None
顺便说一句,值得注意的是,对于大多数用例,您不需要将NaN替换为None,请参阅有关 熊猫中NaN和None之间的区别的 问题。
但是,在这种特定情况下,您似乎可以这样做(至少在回答此问题时)。