繁体   English   中英

python中any()函数的对立面是什么,例如没有任何

[英]What is the opposite of any() function in python, e.g. without any

假设我有一个看起来像这样的 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 组及其值。

使用布尔 NOT 运算符~

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

或者使用德摩根定律检查all值是否不匹配:

df.groupby('group').filter(lambda g: (g.number >= 0).all())

您可以使用 all 函数返回您期望的相反结果。 即它会做相反的事情。 只有当所有都为真时它才会返回 TRUE,否则它将返回 FALSE。

试试看嘛 :

not all(list)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM