python - `x in pandas.core.series.Series` 返回 True 即使其中没有这样的值
问题描述
我有包含一堆 ID 的熊猫系列对象。我想通过检查它们的 ID 是否存在于我的 pandas 系列对象中来过滤掉其他数据帧的行:
DATA['y'] = DATA['ID'].apply(lambda x: 1 if x in IDs else 0)
我注意到 DATA 中的 ID 279779 在“y”列中有“1”,即使我的 ID 系列对象中不存在该 ID。我运行了以下行:
279779 in IDs
,它返回了True
,但以下代码没有打印任何内容:
for id in IDs:
if id == 279779:
print('found')
我做错了什么?为什么在ID中没有这样的ID时会279779 in IDs
返回?True
解决方案
首先您必须确定,ID 的类型是什么?
如果它是一个数字,那么你不能在 for 循环中迭代一个数字。
根据您的 for 循环,如果 IDs 是 String 那么您的 for 循环"id"
标签将在每次迭代中都有一个字符,例如:
"2","7","9","7","7","9"
索引将是[0,1,2,3,4,5]
因此,在第一次和每次迭代中,if 条件将按如下方式工作:
第一次迭代
id= "2"
if id == 279779:
print("Found")
这将一直发生到最后一次迭代,并且 if 条件将始终为 False 。
我的猜测是,IDs 对象有一个带有字符串的列表。请检查一下。
推荐阅读
- android - Android In App 计费失败并显示响应代码 6
- visual-studio-2015 - 在 Q# Quantum Dev kit 中出现错误“已发布的 qubits 未处于零状态”
- sql - 在@SQL 之前替换电子邮件地址中的字母
- regex - 正则表达式:前两个字符中至少一个必须是字母
- java - Apache WS44J 未正确获取环境变量
- python - 升级到 Anaconda Navigator 1.8.7/Python 3.6 (Windows 10) 后无法打开 RStudio 1.1.423
- ruby-on-rails - 将 RSpec 与 Rails 5+ 一起使用时,我应该使用什么来代替“分配”?
- java - 从静态方法返回一个类对象
- python - 来自 Keras 的 pad_sequences 的无效文字错误
- gremlin - JanusGraph - 创建索引后有关所有顶点扫描的警告