Python Pandas isin()返回所有false

Python Pandas isin()返回所有false,python,pandas,dataframe,series,Python,Pandas,Dataframe,Series,我正在使用pandas 1.1.3,这是Anaconda提供的最新版本 我有两个数据帧,从.txt和.xlsx文件导入。它们有一个名为“ID”的列,这是两个数据帧上的int64(用df.info()验证) df1: df2: 我想检查df1上的所有ID是否都在df2上。为此,我创建了一个系列: foo = df1["ID"].isin(df2["ID"]) 我得到的所有值都是False,即使我手动检查,并且值确实匹配 0 False 1

我正在使用pandas 1.1.3,这是Anaconda提供的最新版本

我有两个数据帧,从.txt和.xlsx文件导入。它们有一个名为“ID”的列,这是两个数据帧上的int64(用df.info()验证)

df1:

df2:

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

foo = df1["ID"].isin(df2["ID"])
我得到的所有值都是
False
,即使我手动检查,并且值确实匹配

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

我不确定我是否遗漏了什么,环境是否有问题,或者它是否是一个已知的bug。

你一定是做错了什么。试着用一个玩具例子重现这个错误,就像我在这里做的那样。下面的例子对我有用

复制和分享一个最小的例子不仅可以让你挑战你的错误,也可以让我们提供帮助

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
现在我们已经准备好了,我们开始吃肉

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”])
请参见我的回答中的编辑。我还想展示他们感兴趣的地方。。。我觉得我做的太多了…你说得对。它确实适用于这个例子。它可能与数据类型或类似的东西有关。我去查一下。谢谢
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