如何用iloc判断DataFrame所有行是否满足指定条件?
解决方案
你的问题核心是要验证DataFrame最后rows行的所有行都满足条件,而非单一行。原代码存在两个问题:一是仅选取了倒数第rows行的单个值(而非最后rows行),二是没有检查所有行的条件是否都成立。
修改后的代码如下:
if position == -1: return (df.iloc[-rows:]['ABC'] < level).all() elif position == 1: return (df.iloc[-rows:]['ABC'] > level).all()
关键修改说明:
- 把
df.iloc[-rows]['ABC']改为df.iloc[-rows:]['ABC']:添加冒号后,会选取DataFrame的最后rows行(而非单独一行),得到包含多行数据的Series。 - 调用
.all()方法:对布尔判断结果使用该方法后,只有当Series中所有元素都为True时,才会返回True;只要有一行不满足条件,就返回False。
内容的提问来源于stack exchange,提问作者Zak Pinter
相关产品推荐
相关产品推荐

