python - isin() 准确性的一些问题
问题描述
我在isin()
功能准确性方面存在一些问题。
我和abc
很多人IDs
一起DataFrame
:
df = DataFrame[DataFrame['id'].isin(IDs)]
但结果:
print('abc' in df['id'])
>> False
和结果:
print('abc' in df['id'].unique())
>> True
解决方案
如果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
因此,如果测试由它创建的 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
推荐阅读
- angular - Angular 5:在可观察结果的模板中运行函数导致多次调用函数
- python - Python 线程。为什么线程互相阻塞?
- php - PHP/PDO 选择比 CLI 或 MySQL Workbench 花费更长的时间
- css - Flexbox:flex-start、self-start、start;有什么不同?
- visual-studio - VC++ 中是否有自动快捷方式将键入的标头签名转换为 .cpp 文件中的正文?
- java - 将日期保存到 Room 数据库时,TypeConverter 会打乱数据
- h.264 - 关于 h.264 sps、pps
- python - 如何删除所有定义的 SymPy 符号而不明确列出它们?
- node.js - 节点模块持续构建
- c++ - 为什么这个 C++ 程序在 Code::Blocks 和在线 IDE 之间返回不同的结果?