我正在创建一个应用程序,该应用程序将 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()
有没有更好的方法来做到这一点?
答案 0 :(得分:0)
捕获辐射记录的正确语法是:
frame = df1.merge(df2, how='left', indicator=True, left_on=cols, right_on=cols).query('_merge == "left_only"').drop('_merge', 1)