簡體   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