首页 > 解决方案 > isin() 准确性的一些问题

问题描述

我在isin()功能准确性方面存在一些问题。

我和abc很多人IDs一起DataFrame

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

但结果:

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

和结果:

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

标签: pythonpandas

解决方案


如果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

因此,如果测试由它创建的 numpy 数组按Series.values预期工作:

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

推荐阅读