isin()精度存在一些问题

时间:2019-03-03 07:56:50

标签: python pandas

我对isin()函数的准确性有疑问。

我的abc中有IDsDataFrame

df = DataFrame[DataFrame['id'].isin(IDs)]

但结果:

print('abc' in df['id']) 
>> False

和结果:

print('abc' in df['id'].unique())
>> True

1 个答案:

答案 0 :(得分:3)

如果将inSeries测试结合使用,对索引docs中的成员资格会有问题。

df = pd.DataFrame({'id':['abc','sdf','ert']}, index=['s','d','f'])
print (df)
    id
s  abc
d  sdf
f  ert

print('abc' in df['id'])
False
print('abc' in df['id'].index)
False

因此,如果Series.values创建的测试numpy数组可以正常工作:

print(type(df['id'].values))
<class 'numpy.ndarray'>

print('abc' in df['id'].values)
True

因此,如果测试索引值为:

print('d' in df['id'])
True
print('d' in df['id'].index)
True

编辑:如果使用Series.unique,则返回numpy array

print(df['id'].unique())
['abc' 'sdf' 'ert']

print(type(df['id'].unique()))
<class 'numpy.ndarray'>

print('abc' in df['id'].unique())
True