首页 > 解决方案 > 未能正确使用 pandas .all()

问题描述

显然我无法理解 .all() 是如何工作的。

我的示例数据:

df=pd.DataFrame([[-1,-1,-1],[1,1,1],[-1e-8,-1e-8,1e-8]],columns=['col0','col1','col2'])
df


col0    col1    col2
0   -1.000000e+00   -1.000000e+00   -1.000000e+00
1   1.000000e+00    1.000000e+00    1.000000e+00
2   -1.000000e-08   -1.000000e-08   -1.000000e-08

现在,我只想选择所有值为正的行(本例中的索引 1),所以我尝试构建一个掩码:

mask=[i for i in df.index if df.loc[i,:].all()>0]

但是列表理解中的条件:

df.loc[0,:].all()>0
True

返回 True,即使第 0 行中的所有值都是负数。事实上,无论我使用 df 的哪个部分,我都会得到 True:

df.all(axis=1)>0
True
df.all()>0
True

我很困惑,我一定错过了一些简单的东西。

标签: pythonpandas

解决方案


推荐阅读