假设我有一个名为df的数据帧,它看起来如下所示:
我的数据帧表在下面
Place uid sal
NY 9999 4322
Berlin 1343 3234
NY 22 3234
Berlin 134 3234
我的psql框架低于
Id Place uid flag
1 NY 22 1
2 Berlin 134 1
3 Paris 432 0
4 Paris 43 0
5 Berlin 556 0
我需要通过与数据帧uid
进行比较来插入psql表标志
- 如果flag=1的特定uid,它不会更新
从数据帧uid=9999,1343
将只插入,因为在psql中,两个标志都是零
基本上,它会检查数据帧的uid是否存在,如果标志为1,它不会插入,标志为零,然后它会更新到1
,如果uid不存在,它会插入,标志是0
您可以用几种不同的方法来实现这一点,但最简单的方法可能是从合并开始。
将数据帧与要写入SQL:的数据的左连接放在一起
merged_df = df1.merge(df2, how='left', on='uid')
然后我会过滤数据帧,这样1的标志就会被删除
merged_df = merged_df[merged_df['flag'] != 1]
并编写要sql:的列
merged_df[['Place', 'uid', 'sal']].to_sql('sql_table', con_engine, index=False, if_exists='append')
(con_engine、df1和df2都是psuedo代码,但填写起来应该不会太麻烦(
编辑:我刚刚看到你提到为空白标志添加一个标志,如果你想知道的话,你可以用一个应用程序来做:
merged_df['flag'] = merged_df['flag'].apply(lambda x: x if x == 1 else 0)