用空python熊猫替换NaN

时间:2020-05-27 13:41:56

标签: python pandas amazon-redshift

我正在尝试从熊猫数据帧写入AWS redshift:

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')

谢谢您的帮助

2 个答案:

答案 0 :(得分:0)

Python中没有null。在AWS Redshift中,值缺失或未知时为null。因此,用空字符串替换NaN可能会起作用。考虑使用SizedBox( width: 250, height: 250, child: Stack( children: <Widget>[ Container( width: 250, height: 250, color: Colors.white, ), Container( padding: EdgeInsets.all(5.0), alignment: Alignment.bottomCenter, decoration: BoxDecoration( gradient: LinearGradient( begin: Alignment.topCenter, end: Alignment.bottomCenter, colors: <Color>[ Colors.black.withAlpha(0), Colors.black12, Colors.black45 ], ), ), child: Text( "Foreground Text", style: TextStyle(color: Colors.white, fontSize: 20.0), ), ), ], ), ) 而不是df_tmp_rpt.fillna(value=[None])

https://api.flutter.dev/flutter/widgets/Stack-class.html

答案 1 :(得分:0)

这对我有用。

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

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