python - 从 Pandas Dataframe 中选择一列中具有相同值但在另一列中仅缺失的行
问题描述
在下面的代码中,在 A 列下,foo 和 tog 在 B 列中只有缺失值。但是,我不能简单地使用它is_na()
来过滤所有缺失值,因为有一个 bar 具有缺失值。
df = pd.DataFrame({'A' : ['foo', 'bar', 'foo', 'bar',
'tog', 'bar', 'bar'],
'B' : [np.nan, 2, np.nan, 4, np.nan, 6, np.nan],
'C' : [2.0, 5., 8., 1., 2., 9., 3.]})
我试过了df.groupby('A').filter(df['B'] == 'NaN')
,但返回错误:
“系列”对象不可调用。
如何过滤或选择 foo 和 tog?非常感激!
编辑:我正在清理一个包含一些缺失值但分布在很多行中的数据集。因此,我不能简单地选择与 A 列相对应的命名元素(例如 foo 和 tog)。
换句话说,我需要以下
A B C
1 bar 2.0 5.0
3 bar 4.0 1.0
5 bar 6.0 9.0
6 bar NaN 3.0
解决方案
filter
需要一个函数,您可以传递一个函数来检查是否不是所有的值B
都是NaN
:
df.groupby("A").filter(lambda x: ~x.B.isna().all())
要得到
A B C
1 bar 2.0 5.0
3 bar 4.0 1.0
5 bar 6.0 9.0
6 bar NaN 3.0
wherefoo
和tog
被过滤掉,因为它们在 B 列中有所有 NaN。
推荐阅读
- sql - 如何在更新查询时更新有限数量的记录?
- python - 通过 ssh 有条件地运行子进程,同时将输出附加到(可能是远程的)文件
- amazon-web-services - AWS 工作区用户和密码定义
- axon - 尝试在 axon 服务器 4.4 上注册用户时被禁止
- blockchain - Corda 中的 startFlow 和 startTrackedFlow 有什么区别?
- c# - 什么时候在同一个类的静态构造函数之前访问一个类的静态成员
- python - 是否有用于查找数字和分类列的 python 函数?
- wpf - WPF DataGrid 可编辑 GroupDescriptions
- java - 如何在 JNI 中将 char* 强制转换为 jbyteArray 而没有 malloc 一个新的内存区域
- mysql - 选择是否加入一张表 否则加入另一张表