为什么不能基于多个或条件选择python pandas数据框架中的数据



我有一个具有多列的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。

Use (df==0).any(axis=1)

df…

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'])

最新更新