我正在尝试使用 MysqlDB 将 Pandas 数据框(或可以使用 numpy 数组)写入 mysql 数据库。 MysqlDB 似乎不理解“nan”,我的数据库抛出一个错误,指出 nan 不在字段列表中。我需要找到一种方法将“nan”转换为 NoneType。
有任何想法吗?
原文由 FinDev 发布,翻译遵循 CC BY-SA 4.0 许可协议
我正在尝试使用 MysqlDB 将 Pandas 数据框(或可以使用 numpy 数组)写入 mysql 数据库。 MysqlDB 似乎不理解“nan”,我的数据库抛出一个错误,指出 nan 不在字段列表中。我需要找到一种方法将“nan”转换为 NoneType。
有任何想法吗?
原文由 FinDev 发布,翻译遵循 CC BY-SA 4.0 许可协议
df = df.replace({np.nan: None})
注意: 对于 pandas 版本 <1.4, 这会将 所有 受影响 列 的 dtype 更改为 object
。
为避免这种情况,请改用以下语法:
df = df.replace(np.nan, None)
在 这个 Github 问题 和 Killian Huyghe 的评论中,感谢这个人。
原文由 EliadL 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答5.1k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
1 回答2.5k 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
@bogatron 说得对,你可以使用
where
,值得注意的是你可以在 pandas 中本地执行此操作:注意:这会将 所有列 的 dtype 更改为
object
。例子:
注意:你不能做什么重铸数据帧
dtype
允许所有数据类型类型,使用astype
,然后是数据帧fillna
方法:不幸的是,无论是这个,还是使用
replace
,都不能与None
一起使用,请参阅 这个(已关闭)问题。顺便说一句,值得注意的是,对于大多数用例,您不需要将 NaN 替换为 None,请参阅有关 pandas 中 NaN 和 None 之间区别的 问题。
但是,在这种特定情况下,您似乎这样做了(至少在回答此问题时)。