从 Pandas Dataframe 中选择一列中具有相同值而另一列中仅丢失的行

厄斯拉尔

在下面的代码中,在 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'),但返回一个错误:

“系列”对象不可调用。

如何过滤或选择 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

wherefootog被过滤掉,因为它们在 B 列中包含所有 NaN。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从 Pandas Dataframe 中查找列中的唯一值,并查看这些值是否在另一列中具有相同的值

用另一列中的相同行值替换pandas dataframe列中的值

Pandas Dataframe 根据一列中的唯一值复制具有平均值的行,以便每个唯一值具有相同的行数

如何基于Pandas中特定值的一列转换仅在一列中仅具有唯一值的DataFrame

使用同一列中与另一列中具有匹配值的值填充Pandas DataFrame中的空值

Python Pandas DataFrame检查一列的值是否在另一列表中

用另一列Pandas DataFrame替换一列中的值

将行从一列移动到另一列以及pandas DataFrame中的相应值

有效地将一列中的值替换为另一列Pandas DataFrame

Pandas DataFrame:一列中的值基於另一列中先前的值,第三列中的相同值

基于Pandas DataFrame中另一列的总和列

Pandas - 根据后一列中是否存在值过滤一列中具有相同值和另一列中多个值的行

Pandas DataFrame:根據另一列中的 von 值操作一列中的值

从 Pandas DataFrame 中删除一列

将 Dataframe 中的一列与 Pandas 中不同大小的另一列进行比较

通过另一列中给出的索引选择pandas DataFrame列

通过匹配Pandas DataFrame中另一列中的值来区分行值

根据另一列的条件更新Pandas DataFrame中的一列

在Pandas Dataframe中按一列排序,然后按另一列分组?

仅当一列没有值时,Pandas DataFrame才会从另一个数据框中更新

比较一列中的float值与pandas DataFrame中的所有其他列

Pandas DataFrame-删除特定列中与上一行具有相同值的行

Pandas Dataframe仅按一列过滤行

pandas DataFrame:当另一列中的对应项目大于值时,获取列项目

pandas DataFrame:根据另一列中的布尔值计算总和

在pandas DataFrame中选择与一列的前两个不同项匹配的行

根据不同的DataFrame在Pandas DataFrame中添加一列

Pandas Dataframe:计算一列中的唯一单词并返回另一列中的计数

如何遍历pandas DataFrame的一列并从另一列返回值?