为何Pandas .any()方法会按列返回单个布尔值?
为什么Pandas的
.any()方法会按列返回单个布尔值? 嘿,这问题问得很到位!让我给你掰扯清楚背后的逻辑~
首先得明确Pandas中.any()方法的默认行为:.any()的作用是检查指定轴上是否存在至少一个True值,它的默认参数是axis=0——这个参数直接决定了它的检查方向:
axis=0:按列进行检查(垂直方向),对每一列的所有行做判断,只要该列里有一个True,就返回True,否则返回Falseaxis=1:按行进行检查(水平方向),对每一行的所有列做判断,只要该行里有一个True,就返回True,否则返回False
结合你的实例拆解:
先看你的代码和输出:
print("Data : ", df) print("Value: ", (df < 0).any())
输出:
Data : 1 2 3 0 0.000000 NaN NaN 1 11.874342 NaN NaN 2 2.236068 NaN NaN 3 12.041595 11.313708 NaN 4 2.236068 -11.400000 12.165525 Value: 1 False 2 True 3 False dtype: bool
- 第一步执行
df < 0,会生成一个和原DataFrame形状一致的布尔表:只有第4行第2列的位置是True(因为-11.4<0),其他位置都是False(包括NaN,因为NaN和任何值比较结果都是False) - 接着调用
.any()(默认axis=0),按列逐一检查:- 列1:所有值都是非负数,没有
True,返回False - 列2:存在一个
True,返回True - 列3:所有值都是非负数,返回
False
- 列1:所有值都是非负数,没有
如果想按行返回结果怎么办?
只需把参数改成axis=1即可:
print("Value by row: ", (df < 0).any(axis=1))
对应的输出会是每行的布尔值——只有第4行是True,其余行都是False。
内容的提问来源于stack exchange,提问作者Ribery
相关产品推荐
相关产品推荐

