将 Pandas 数据框列与 sql 表数据框列进行比较

时间:2021-01-13 20:52:20

标签: python sql pandas

我正在创建一个应用程序,该应用程序将 CSV 加载到一个数据帧中,并将 SQL 查找表加载到另一个数据帧中。

第一帧有列:col1、col2、...、coln。

第二帧是一个只包含 col1 和 col2 的查找表。

查找表看起来像

<头>
col1 col2
AB 123
AB 234
BC 456

等等。第一个表需要有一个有效的键组合。我想获取无效的记录集。

我需要执行诸如“如果密钥对不存在,则获取记录。否则删除”

我想我可以对每个循环进行嵌套循环,但我想知道是否有更有效的方法来执行此操作,例如使用 pd.merge 或其他方法。

这是我到目前为止所得到的:

... create two dataframes
...

frame = d1.merge(df2, how='outer', indicator=True, left_on=['col1', 'col2']).loc[lambda x: x['_merge'] == 'left_only']

我收到此错误:

<块引用>

TypeError: 'NoneType' 类型的对象没有 len()

有没有更好的方法来做到这一点?

1 个答案:

答案 0 :(得分:0)

感谢this post

捕获辐射记录的正确语法是:

frame = df1.merge(df2, how='left', indicator=True, left_on=cols, right_on=cols).query('_merge == "left_only"').drop('_merge', 1)