从 Pandas 数据框中选择一列中具有相同值但另一列中仅缺失的行
Selecting rows from Pandas Dataframe with same values in one column that have only missing in another
在下面的代码中,在 A 列下,foo 和 tog 在 B 列中只有缺失值。但是,我不能简单地使用 is_na()
来过滤所有缺失值,因为有一个栏有缺失值。
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')
,但是 returns 出错了:
'Series' object is not callable.
如何过滤或 select foo 和 tog?非常感谢!
编辑:我正在清理一个数据集,它有一些缺失值,但分布在很多行中。因此,对于与 A 列对应的命名元素(例如 foo 和 tog),我不能简单地 select。
换句话说,我需要以下内容
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
其中 foo
和 tog
被过滤掉,因为它们在 B 列中全部为 NaN。
在下面的代码中,在 A 列下,foo 和 tog 在 B 列中只有缺失值。但是,我不能简单地使用 is_na()
来过滤所有缺失值,因为有一个栏有缺失值。
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')
,但是 returns 出错了:
'Series' object is not callable.
如何过滤或 select foo 和 tog?非常感谢!
编辑:我正在清理一个数据集,它有一些缺失值,但分布在很多行中。因此,对于与 A 列对应的命名元素(例如 foo 和 tog),我不能简单地 select。
换句话说,我需要以下内容
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
其中 foo
和 tog
被过滤掉,因为它们在 B 列中全部为 NaN。