首页 > 解决方案 > 问题,新列中的所有行都更改为上次执行的计算结果

问题描述

我是 python 新手并且已经研究过寻找答案,我很可能没有问正确的问题。我正在将数据从交换流式传输到数据帧中,稍后将数据流式传输到数据库中,我的问题是,当我对列进行计算以创建包含结果的新列时,所有行的所有值新列更改为最后一个结果。

我在股票的开盘价、最高价、最低价、收盘价中流动。在一列中,我正在计算时间范围内蜡烛的范围,例如在一小时图上。

src = candles.close
ohlc = candles
ohlc = ohlc.rename(columns=str.lower)
candles['SMA_21'] = TA.SSMA(ohlc, period)
candles['EMA_21'] = TA.EMA(ohlc, period)
candles['WMA'] = TA.WMA(ohlc, 10)
   
  
candles['Range'] = src - candles['open']
    
candles['AvgRange'] = candles['Range'].tail(21).mean()

范围列有效并且具有正确的信息,每次计算都不会改变。但是“AvgRange”列最终会随着计算出的每个新平均值而改变所有值。

以下还将最后一个数据条目写入整个列流['EMA_Dir']

如果流['EMA'].iloc[-1] > 流['EMA'].iloc[-2]:

    stream['EMA_Dir'] = "Ascending"

我只想要数据框的最后一个,最新的行中的最后一个条目。

尝试了几件事,但最后一次计算更改了“AvgRange”列中的所有值。

提前致谢。抱歉,如果我没有正确提出问题,但这可能就是我没有找到答案的原因。

标签: pythonpandasdataframe

解决方案


candles['AvgRange'] = candles[’range’].rolling(
window=3,
center=False
).mean()

这将为您提供 3 行滚动平均值


推荐阅读