簡體   English   中英

為什么不能根據多個或條件在 python pandas 數據框中選擇數據

[英]Why not able to select data in python pandas dataframe based on multiple or criteria

我有一個包含多列的 df 並嘗試根據 OR 邏輯選擇數據的子集:

df [ (df['col1']==0) | (df['col2']==0) | (df['col3']==0) | (df['col4']==0) |
(df['col5']==0) | (df['col6']==0) | (df['col7']==0) | (df['col8']==0) |
(df['col9']==0) | (df['col10']==0) | (df['col11']==0) ]

當我應用此邏輯時,結果為空,但我知道有些值為零

這些列的所有值都是 int64。

我注意到'col11'都是1。 當我刪除 'col11' 或交換查詢的順序時(例如,將“| (df['col11']==0)” 放在中間)我得到了預期的結果。

我想知道是否有人遇到過這個問題或任何想法,我返回空 df 的原因是什么。

使用 (df==0).any(axis=1)

東...

    a   b   c   d   e   f
0   6   8   7  19   3  14
1  14  19   3  13  10  10
2   6  18  16   0  15  12
3  19   4  14   3   8   3
4   4  14  15   1   6  11

>>> (df==0).any(axis=1)
0    False
1    False
2     True
3    False
4    False
>>> #subset of the columns
>>> (df[['a','c','e']]==0).any(axis=1)
0    False
1    False
2    False
3    False
4    False
dtype: bool

如果 DataFrame 都是整數,您可以利用零是錯誤的事實並使用

~df.all(axis=1)

制作虛假數據

import numpy as np
import pandas as pd
rng = np.random.default_rng()
nrows = 5
df = pd.DataFrame(rng.integers(0,20,(nrows,6)),columns=['a', 'b', 'c', 'd','e','f'])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM