如何在一天内的特定时间段内应用累积python函数,然后从第二天开始重置
Posted
技术标签:
【中文标题】如何在一天内的特定时间段内应用累积python函数,然后从第二天开始重置【英文标题】:How to apply a cumulative python function for specific time-periods within a day and then reset from the very next day 【发布时间】:2019-08-16 01:07:56 【问题描述】:我正在对特定数量的时间段应用时间序列累积函数,比如 15 分钟到一系列天 我的主要功能是:
def axmp(df):
return np.cumsum(df.Volume * (df.High + df.Low + df.Close)/3) / np.cumsum(df.Volume)
但我无法通过 pandas groupby 方法将上述函数应用于包含 15 分钟股票数据的 pandas 数据框。
在上面的函数中,我希望在每个新的一天开始时重置上面的 python 函数(即它不应该从前几天获取任何累积数字)并且应该持续超过一年的库存数据.
样本数据:
Date Open High Low Close Volume
13-02-2019 9:15 65.89 65.89 65.89 65.89 24339
13-02-2019 9:30 66.00 66.00 66.00 66.00 1892
14-02-2019 11:15 65.98 65.98 65.98 65.98 1937
14-02-2019 11:30 65.95 66.01 65.95 66.01 5181
15-02-2019 9:15 66.04 66.08 66.04 66.08 6189
请建议我对上述代码或新代码进行任何修改。
【问题讨论】:
【参考方案1】:IIUC 你需要申请axmp
按天分组:
df.Date = pd.to_datetime(df.Date)
df['new_col'] = df.groupby(df.Date.dt.day).apply(axmp).reset_index(drop=True)
输出
Date Open High Low Close Volume new_col
0 2019-02-13 09:15:00 65.89 65.89 65.89 65.89 24339 65.890000
1 2019-02-13 09:30:00 66.00 66.00 66.00 66.00 1892 65.897934
2 2019-02-14 11:15:00 65.98 65.98 65.98 65.98 1937 65.980000
3 2019-02-14 11:30:00 65.95 66.01 65.95 66.01 5181 65.987279
4 2019-02-15 09:15:00 66.04 66.08 66.04 66.08 6189 66.066667
【讨论】:
@yatu 应用您的代码,新列仅显示数据框中的 NaN 值 @Wen-Ben 这不完全是一个滚动问题 对我来说很好@ScrappyCoco。日期是日期时间格式吗?否则使用新行以上是关于如何在一天内的特定时间段内应用累积python函数,然后从第二天开始重置的主要内容,如果未能解决你的问题,请参考以下文章