python - 使用“in”查找值是否存在于 Pandas 数据框列中不起作用?
问题描述
我目前正在编写一个脚本来过滤来自自动化机器周期的 csv 输出数据。我想要的是提供一个循环的开始和停止的索引,并检查机器“状态”列是否包含一个 int 值 12。我正在查看前两个循环并运行完全相同的代码,但较小的索引不同l 数据框。对于第一个周期 [0:16],v 按预期返回 true。但是,即使状态列包含 12,第二个循环仍将 v 返回为 False。目标是最终在列表中找到每个循环的索引(当 key == 102 时)并循环查找状态 12 是否执行在每个周期。
这是数据帧第一个周期的快照: 第一个周期
这是第二个周期前半部分的快照: 第二个周期
两个数据框在状态列中的值为 12。所以如果我使用'in',它应该返回True。
L = df[0:16]
#exists = 12 in L.state
v = 12 in L.state
print(v)
上面按预期返回 True 。
L = df[16:51]
#exists = 12 in L.state
v = 12 in L.state
print(v)
以上返回 False ,这让我感到困惑。
由于相同的数据帧用于制作较小的 L 数据帧和相同的 12 在 L.state 调用中返回一个布尔值。有谁知道我错过了什么,为什么这段代码在第二组索引上的执行方式不同?
解决方案
这是因为当你in
用来做一个系列的比较时,它是在检查索引。如果要检查值,请使用v = 12 in L.state.values
. 我在相关的 SO 评论中看到了这个答案。
推荐阅读
- javascript - 为什么不在 React Native 的堆栈导航器中呈现的组件中更新道具
- python - 将信息传递给菜单中的函数的问题
- c - C fgets 和数组:解释
- java - 如何设置计数器来读取睡眠时间?
- python - 如何将 UniqueTogetherValidator 显示为字段错误而不是非字段错误?
- firebase - 如何测试 FCM 数据推送通知传递?
- c# - 强制“可能的意外参考比较”警告
- fortran - 如果全局变量与子程序中的 INOUT 变量相同,则没有警告但错误
- sql - Oracle SQL 查询修复主键中的空问题
- reactjs - 如何使用 hookrouter 制作自定义链接组件?