无需重新采样的更高时间范围

2024-05-14 14:51:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个5分钟观察的熊猫DF。 我想为收盘价rsi的1小时观察添加另一列,但使用新的5分钟观察之前的60分钟,每5分钟一次。它需要每5分钟更新一次。 我尝试过重新采样,但当新数据进来时,我遇到了一个问题,60分钟还没有完成,因此我不希望在一小时内更新,而是每5分钟更新一次

我试过使用df['sma60'] = df.close.rolling(window=60),但当我应用PYTI rsi时,我得到了NAN's

编辑: 在第一个答案之后,我尝试了下面的方法,但是如果你看下面的图表,我觉得不太对劲

df['rsiCurrent'] = rsi(df.close, 13)
df['sma15'] = df.close.rolling('15min').mean()
df['rsi15'] = rsi(df.sma15, 13)
df['sma60'] = df.close.rolling('1H').mean()
df['rsi60'] = rsi(df.sma15, 13)

Display the output graphs and you can see it doesn't look right

plt.figure(figsize=(20, 8))
plt.subplot(311)
plt.plot(df[:450]['rsiCurrent'])
plt.legend(['TDI Cur'])
plt.subplot(312)
plt.plot(df[:450]['rsi15'])
plt.legend(['TDI 15m'])
plt.subplot(313)
plt.plot(df[:450]['rsi60'])
plt.legend(['TDI 60'])
plt.show()

上面的代码用于显示,但除此之外,它只是DF中的关闭代码

如有任何指示或更正,将不胜感激


Tags: dfcloseplotpltmean小时tdilegend
1条回答
网友
1楼 · 发布于 2024-05-14 14:51:06

如果您的数据帧是时间索引的(索引是datetieme),则可以使用时间段作为窗口refer here e、 g:

df = pd.DataFrame({'col1': [1, 2, 3, 4, 5],'col2':[1,2,3,4,5]},
                   index = [pd.Timestamp('20130101 09:00:00'),
                            pd.Timestamp('20130101 09:10:02'),
                            pd.Timestamp('20130101 09:31:03'),
                            pd.Timestamp('20130101 10:30:05'),
                            pd.Timestamp('20130101 10:40:06')])
>>>df
                     col1  col2
2013-01-01 09:00:00     1     1
2013-01-01 09:10:02     2     2
2013-01-01 09:31:03     3     3
2013-01-01 10:30:05     4     4
2013-01-01 10:40:06     5     5

应用窗口=1H

df.col1.rolling('1H').mean()

2013-01-01 09:00:00    1.0
2013-01-01 09:10:02    1.5
2013-01-01 09:31:03    2.0
2013-01-01 10:30:05    3.5
2013-01-01 10:40:06    4.5

相关问题 更多 >

    热门问题