首页 > 解决方案 > `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

标签: pythonpandas

解决方案


首先您必须确定,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 对象有一个带有字符串的列表。请检查一下。


推荐阅读