我正在尝试从熊猫数据帧写入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')
谢谢您的帮助
答案 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])
。
答案 1 :(得分:0)
这对我有用。
df_tmp_rpt = df_tmp_rpt.where(df_tmp_rpt.notna(), None)
这会将 Dataframe 中的所有 NaN 值替换为 None。 None 在数据库中作为 NULL 加载。这适用于 MS SQL。