根据每分钟更新的变量创建系列

时间:2019-02-27 21:44:43

标签: python python-3.x pandas series

因此,Im编写了一个程序,其中每分钟(如下)计算下面的变量fastMA和slowMA。我试图找出一种将每个实例的计算结果添加到序列中的方法,以便可以将最近一分钟的值与最后一分钟的值进行比较。因此,我只需要两个最新的计算。

if len(dfC) >= 75:

    fastMAcloses = pd.DataFrame(dfC.tail(20)).values
    fastMA = fastMAcloses.sum() / 20
    print(fastMA)

    slowMAcloses = pd.DataFrame(dfC.tail(75)).values
    slowMA = slowMAcloses.sum() / 75
    print(slowMA)

else:
    print('... calculating MAs in', 75 - len(dfC), 'min')

到目前为止,我想出的是:

    columnsMA = ['Fast MA:', 'Slow MA:']
    valuesMA = [fastMA, slowMA]
    listMA = list(valuesMA)
    seriesMA = pd.Series(listMA, columnsMA)
    print(seriesMA)

但是,每次计算时,新分钟的值都会覆盖以前的值,因此无法进行比较。如果可以的话,我非常感谢!

1 个答案:

答案 0 :(得分:1)

您可以尝试类似以下操作:

columnsMA = ['Time:','Fast MA:', 'Slow MA:']

#Initiate results
results=pd.DataFrame([[datetime.datetime.now(),fastMA,slowMA]],columns=columnsMA)
                print(results)

#Append to results (say every minute)
dfTemp=pd.DataFrame([[datetime.datetime.now(),fastMA,slowMA]],columns=columnsMA)
results=results.append(dfTemp,ignore_index=True)
print(results)

#Append to results (say every minute)
dfTemp=pd.DataFrame([[datetime.datetime.now(),fastMA,slowMA]],columns=columnsMA)
results=results.append(dfTemp,ignore_index=True)
print(results)

    ... keep appending to the dataframe ....

还有一个concat函数,您可以进一步研究。

我猜想,如果您只想在内存中保留2分钟的数据而不是完整的历史记录,那么您可以仅从尾部和新的计算结果构建一个数据帧。