首页 > 解决方案 > 用 null python pandas 替换 NaN

问题描述

我正在尝试从熊猫数据框写入 AWS 红移:

df_tmp_rpt = pd.read_csv('path')
df_tmp_rpt = df_tmp_rpt[df_tmp_rpt['COL'] == 'VALUE']
df_tmp_rpt = df_tmp_rpt.replace(np.nan, null, regex=True)
records = df_tmp_rpt.to_records(index=False)
for record in records:
     script_insert = ScriptReader.get_script(SCRIPT_PATH).format(record)
     RedshiftDataManager.run_update(script_insert, DB_CONNECTION)

Redshift 需要格式 ('value1','value2',null) 来插入数据。这就是为什么我尝试在数据框中用 null 替换所有 NaN。我将如何实现这样的事情?(我需要一个空值而不是字符串'null')

提前感谢您的帮助

标签: pythonpandasamazon-redshift

解决方案


这对我有用。

df_tmp_rpt = df_tmp_rpt.where(df_tmp_rpt.notna(), None)

这会将 Dataframe 中的所有 NaN 值替换为 None。None 在数据库中加载为 NULL。这适用于 MS SQL。


推荐阅读