【问题标题】:What is the opposite of any() function in python, e.g. without anypython中any()函数的对立面是什么,例如没有任何
【发布时间】:2022-06-23 16:55:15
【问题描述】:

假设我有一个如下所示的 df:

import pandas as pd
d = {'group': ['A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B', 'C', 'C', 'C', 'C', 'C'], 
      'number': [0, 3, 2, 1, 2, 1, -2, 1, 2, 3, 4, 2, 1, -1, 0]}
df = pd.DataFrame(data=d)
df

    group   number
0   A       0
1   A       3
2   A       2
3   A       1
4   A       2
5   B       1
6   B      -2
7   B       1
8   B       2
9   B       3
10  C       4
11  C       2
12  C       1
13  C      -1
14  C       0

如果number 列中的一个值为负数,我想删除整个组。我能做到:

df.groupby('group').filter(lambda g: (g.number < 0).any())

但是这给了我错误的输出,因为这会返回所有组任何行在number 列中具有负数。见下文:

    group   number
5   B       1
6   B      -2
7   B       1
8   B       2
9   B       3
10  C       4
11  C       2
12  C       1
13  C      -1
14  C       0

如何更改此函数以使其返回number 列中没有任何负数的所有组。输出应该是 A 组及其值。

【问题讨论】:

    标签: python pandas filter group-by any


    【解决方案1】:

    使用布尔 NOT 运算符~:

    df.groupby('group').filter(lambda g: ~(g.number < 0).any())
    ``
    

    【讨论】:

      猜你喜欢
      • 2015-07-01
      • 2016-08-19
      • 1970-01-01
      • 1970-01-01
      • 2014-07-03
      • 2021-10-16
      • 2013-06-22
      • 1970-01-01
      相关资源
      最近更新 更多