遍历Pandas DataFrame,循环后计算candle变量总和
解决方案
方法1:改进你的循环代码
你原来的代码只是逐行给candle赋值,但没做累计计数。只需加个计数器变量,就能实现统计:
total_candles = 0 # 初始化计数器 for index, row in df.iterrows(): openPrice = row['open'] closePrice = row['close'] # 原逻辑中,收盘价>=开盘价时candle为0,其余情况为1 if closePrice - openPrice >= 0: candle = 0 else: candle = 1 total_candles += 1 # 每次candle为1时累加计数 print(total_candles) # 输出最终总和
方法2:用Pandas向量化操作(更高效)
不用逐行循环,直接利用Pandas的向量运算,这比iterrows快得多,尤其适合处理大体积的DataFrame:
# 直接判断收盘价是否小于开盘价,布尔值序列求和(True等价于1,False等价于0) total_candles = (df['close'] < df['open']).sum() print(total_candles)
逻辑匹配说明
你的原代码中,当收盘价等于开盘价时会进入第一个分支,设candle=0,上面的向量化代码正好对应这个逻辑——仅统计收盘价严格小于开盘价的次数。如果想把收盘价等于开盘价的情况也计入candle=1,只需修改条件:
total_candles = (df['close'] <= df['open']).sum()
内容的提问来源于stack exchange,提问作者Bronson77
相关产品推荐
相关产品推荐

