pandas - Pandas:获取正好有一个 0 的行
问题描述
给定df:
foo bar baz
0 0 0
0 5 3
1 0 2
1 6 1
我只想得到正好有一个 0 的行:
foo bar baz
0 5 3
1 0 2
我知道df.loc[df['foo'] == 0]
会给我 foo 列中 0 的所有行,但它不会跨行比较以确保只有一个 0。我的实际数据有更多列,所以我喜欢一个不'不涉及输入每个列标题。
解决方案
您可以df.eq(0).sum(1).eq(1)
用作条件:
df[df.eq(0).sum(1).eq(1)]
# foo bar baz
#1 0 5 3
#2 1 0 2
元素是否等于0
:
df.eq(0)
# foo bar baz
#0 True True True
#1 True False False
#2 False True False
#3 False False False
按行计数零:
df.eq(0).sum(1)
#0 3
#1 1
#2 1
#3 0
#dtype: int64
检查每一行是否只有一个零:
df.eq(0).sum(1).eq(1)
#0 False
#1 True
#2 True
#3 False
#dtype: bool
推荐阅读
- c# - EF Core 获取树层次结构直到最后一个孩子
- python - 如何将值从 python 脚本传递给 bash 脚本
- reactjs - redux store 应该如何在大型 React 应用中使用?
- d3.js - 如何获取选定的节点 ID - Js Tree ContextMenu
- c# - 带有参数 Mediatr 和 Moq 的模拟处理程序
- android - Firebase Crashlytic 不显示带有 LLD 链接器 Android 应用程序的堆栈 strace
- vb.net - 如何在循环中使用变量引用控件?
- qt - 导航到不同页面时,QML 保存页面的最后状态
- php - 按内部循环 PDO 排序
- java - 将图像上传到firebase中的不同文件夹