【问题标题】:Checking if a two values in a df in two different columns exist in a different df?检查两个不同列中的df中的两个值是否存在于不同的df中?
【发布时间】:2019-09-13 09:34:47
【问题描述】:

我有一个如下所示的 dfa 和 dfb,

id      start_time  
ab23     2019-04-01 23:00:00.000
bv63     2019-04-01 23:15:00.000
ab20     2019-04-01 21:00:00.000
bv43     2019-04-01 22:15:00.000

id      start_time  
ab23     2019-04-01 23:00:00.000
bv43     2019-04-01 23:15:00.000

我想知道两个dfs中是否存在相同start_time的id?

我尝试了类似的东西

matches = dfa['start_time'].isin(dfb['start_time'])
dfa['id'][matches]

但它表明两个 dfs 中的每一行都存在于麻烦中但事实并非如此是不是上面的代码有问题?

【问题讨论】:

    标签: python-3.x pandas dataframe conditional


    【解决方案1】:

    我认为您需要 DataFrame.merge 两列默认内连接:

    out = dfa.merge(dfb, on=['start_time', 'id'])['id']
    print (out)
    0    ab23
    Name: id, dtype: object
    

    【讨论】:

    • 日期值有什么遗漏吗? Bc 我尝试了这两种方法,它表明每一行中的每个 id 都存在相同的开始时间,但是当我手动查看数据时,情况并非如此@jezrael
    • @Chris90 - 是否也可以为第二个 df 创建示例数据?我认为minimal, complete, and verifiable example 具有预期的输出。
    • 我不知道如何在这里创建示例数据 - 我可以将 csv 发送给您,因为它的数据量非常小吗? 1k 行@jezrael
    • @Chris90 - 一个想法,df = df1.merge(df2, on=['time', 'id']) 工作如何?
    • 是的!这似乎给了我一个更低更准确的数字——为什么这个有效,而现在上面的其他数字有效?谢谢 ! @jezrael
    猜你喜欢
    • 1970-01-01
    • 2017-09-03
    • 1970-01-01
    • 1970-01-01
    • 2020-06-07
    • 1970-01-01
    • 2021-08-18
    • 2021-03-28
    • 2022-11-23
    相关资源
    最近更新 更多