【问题标题】:Pandas isin() returning all false熊猫 isin() 返回全部错误
【发布时间】:2020-11-18 22:16:20
【问题描述】:

我正在使用 Pandas 1.1.3,Anaconda 提供的最新版本。

我有两个 DataFrame,从一个 .txt 和一个 .xlsx 文件导入。他们在两个 DataFrame 上都有一个名为“ID”的列,它是一个 int64(使用 df.info() 验证)。

df1:

          ID        Name
0 1234564567 Last, First
1 1234564569 Last, First
...

df2:

          ID Amount
0 1234564567  59.99
1 5678995545  19.99

我想检查 df1 上的所有 ID 是否都在 df2 上。为此,我创建了一个系列:

foo = df1["ID"].isin(df2["ID"])

我知道所有值都是False,即使我手动检查并且值匹配。

0       False
1       False
2       False
3       False
4       False 
...

我不确定我是否遗漏了什么,环境是否有问题,或者是否是已知错误。

【问题讨论】:

    标签: python pandas dataframe series


    【解决方案1】:

    你一定做错了什么。尝试像我在此处所做的那样使用玩具示例重现此错误。以下对我有用。

    复制和分享一个最小示例不仅可以让您挑战自己的错误,还可以让我们提供帮助。

    import pandas as pd
    import numpy as np
    data = {'Name':['Tom', 'nick'], 'ID':[1234564567, 1234564569]} 
    data2 = {'Name':['Tom', 'nick'], 'ID':[1234564567, 5678995545]} 
    # Create DataFrame 
    df = pd.DataFrame(data) 
    df2 = pd.DataFrame(data2) 
    df["ID"].isin(df2["ID"])
    0     True
    1    False
    Name: ID, dtype: bool
    

    编辑: 使用 Paul 的数据,我没有收到任何错误。看到提供示例的重要性了吗?

    import pandas as pd
    data = {'ID':['1234564567', '1234564569'],'Name':['Last, First', 'Last, First']}
    data2 = {'ID':['1234564567', '5678995545'],'Amount': [59.99, 19.99]}
    df1 = pd.DataFrame(data)
    df2 = pd.DataFrame(data2)
    df["ID"].isin(df2["ID"])
    0     True
    1    False
    

    【讨论】:

    • 你是对的。它确实适用于该示例。它可能与数据类型或类似的东西有关。我会检查一下。谢谢。
    【解决方案2】:
    import pandas as pd
    data = {'ID':['1234564567', '1234564569'],'Name':['Last, First', 'Last, First']}
    data2 = {'ID':['1234564567', '5678995545'],'Amount': [59.99, 19.99]}
    df1 = pd.DataFrame(data)
    df2 = pd.DataFrame(data2)
    

    现在我们已经设置好了,我们开始吃肉了……

    df1["ID"].apply(lambda x: df2['ID'].isin([x]))
    

    哪个显示

        0       1
    0   True    False
    1   False   False
    

    df1 中的 ID 0 在 df2 的 ID 0 中

    【讨论】:

    • 有了这些数据,以下对我有用:df["ID"].isin(df2["ID"]) 请参阅我的回答中的编辑
    • 同意。我还想展示他们感兴趣的地方......我认为我做的太多......
    猜你喜欢
    • 2022-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-24
    相关资源
    最近更新 更多