如何比较pandas Series的值并解决代码if条件判断的报错问题
问题原因
你遇到的报错有两个核心触发点:
- 缩进语法错误:Python强制要求缩进区分代码块,你写的
if语句下方的3行代码没有缩进,不属于if的执行分支,会直接触发语法报错。 - 布尔序列无法直接用于条件判断:
df['close']是pandas的Series对象,对应整个列的所有数值。你用df['close'] > df['close'].iloc[0]+10做比较时,返回的是和df['close']长度一致的布尔序列,每个元素对应原位置的数值是否满足条件。但Python的if、while语句只能接收单个True/False布尔值,不能直接处理布尔序列,所以会触发报错。同时你while语句里的df['close'] > Shoot*0.7也存在相同问题。
解决方法
根据你的实际业务逻辑选择对应修改方案即可:
- 如果你要判断所有close值都满足条件,给布尔序列加
.all()方法 - 如果你要判断至少有一个close值满足条件,给布尔序列加
.any()方法 - 如果你要逐行判断每个close值的情况,遍历
df['close']的单个元素再做判断,不要直接拿整个列做比较
修正示例(以判断所有值都满足条件为例)
while (g < 6) or (df['close'] > Shoot*0.7).all(): if (df['close']> df['close'].iloc[0]+10).all(): resete = df['close']* 1/Shoot resete = resete -1 usdt = resete* usdt
内容的提问来源于stack exchange,提问作者Armel Besho
相关产品推荐
相关产品推荐

