如何迭代一个数据帧并插入到mysqldb中



假设我有一个名为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)

最新更新