因此,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)
但是,每次计算时,新分钟的值都会覆盖以前的值,因此无法进行比较。如果可以的话,我非常感谢!
答案 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分钟的数据而不是完整的历史记录,那么您可以仅从尾部和新的计算结果构建一个数据帧。