我对isin()
函数的准确性有疑问。
我的abc
中有IDs
个DataFrame
:
df = DataFrame[DataFrame['id'].isin(IDs)]
但结果:
print('abc' in df['id'])
>> False
和结果:
print('abc' in df['id'].unique())
>> True
答案 0 :(得分:3)
如果将in
与Series
测试结合使用,对索引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