【问题标题】:Compare pandas dataframe columns to sql table dataframe columns将 pandas 数据框列与 sql 表数据框列进行比较
【发布时间】:2021-01-13 20:52:20
【问题描述】:

我正在创建一个应用程序,它将 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()

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

【问题讨论】:

    标签: python sql pandas


    【解决方案1】:

    感谢this post找到它

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-14
      • 2018-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多