python - 熊猫没有在列中找到元素
问题描述
Pandas 似乎没有找到列表中的所有元素:
df = pd.DataFrame({"rid": ["125264429", "a"], "id": [1, 2]})
1 in df["id"] # <- expect True, get True
"125264429" in df["rid"] # <- expect True, get False
df[df["rid"] == "125264429"] # <- yields result
我确信对这种行为有一个完全合理的解释,但我似乎找不到它。最后两列似乎相互矛盾。它是否与“rid”列的数据类型是对象这一事实有关?
解决方案
如果使用in
运算符,它测试的不是系列/列的值,而是索引值,文档:
print(1 in df["id"]) # <- expect True, get True
print("125264429" in df["rid"]) # <- expect True, get False
是一样的:
print(1 in df["id"].index) # <- expect True, get True
print("125264429" in df["rid"].index) # <- expect True, get False
因此,如果将值转换为 numpy 数组或列出它按预期工作:
print(1 in df["id"].values) # <- expect True, get True
print("125264429" in df["rid"].values) # <- expect True, get True
print(1 in df["id"].tolist()) # <- expect True, get True
print("125264429" in df["rid"].tolist()) # <- expect True, get True
推荐阅读
- javascript - 如何在 Firebase-ui web 中显示 SignInFailure 错误消息?
- python - Python pyqt5 重置所有小部件输入
- c++ - 是否有来自任何容器的 stl 迭代器的多态包装器?
- excel - Bloomberg excel 插件 BDH
- github - GitHub Actions 作业序列
- python - SQLAlchemy中连接表列的多个条件
- excel - 如何提取和保存多幅图像的 LBP 特征?
- sql - PostgreSQL:如何让我的函数返回我插入的新行的 id?
- reactjs - Nextjs css闪烁
- amazon-web-services - AWS SQS FIFO 无法接收所有消息