python - 获取滚动 15 分钟的最大值

标签 python pandas time-series

我正在处理股票数据,我试图获取过去 15 分钟内“最后”值的最大值(最大值)。这显示在名为 Max 的列中的预期输出中。

我尝试的代码需要很长时间才能计算,我确信缺少一些东西。不知道该怎么做,因为我是 Pandas 时间序列计算的新手。任何人都可以提供您的解决方案。谢谢

尝试过的代码:

for c in df["Last"].dropna():
    df[c]=df["Last"].fillna(0).rolling('15T').max()
new="Prev15max_min"+df["Last"].dropna()
df.loc[:df.index[0]+pd.DateOffset(minutes=15),new]=np.nan

我拥有的数据如下所示

Timestamp        Last          
1/20/19 12:15    3071.56
1/20/19 12:17    3097.82
1/20/19 12:17    3097.82
1/20/19 12:18    3095.25
1/20/19 12:19    3087.42
1/20/19 12:20    3095.29
1/20/19 12:21    3095.25
1/20/19 12:22    3093.11
1/20/19 12:23    3103
1/20/19 12:24    3095
1/20/19 12:25    3100.6
1/20/19 12:26    3099.84
1/20/19 12:27    3098.77
1/20/19 12:29    3097.24
1/20/19 12:29    3090
1/20/19 12:30    3090
1/20/19 12:31    3094.2

预期输出

Timestamp        Last           Max   
1/20/19 12:15    3071.56
1/20/19 12:17    3097.82
1/20/19 12:17    3097.82
1/20/19 12:18    3095.25
1/20/19 12:19    3087.42
1/20/19 12:20    3095.29
1/20/19 12:21    3095.25
1/20/19 12:22    3093.11
1/20/19 12:23    3103
1/20/19 12:24    3095
1/20/19 12:25    3100.6
1/20/19 12:26    3099.84
1/20/19 12:27    3098.77
1/20/19 12:29    3097.24
1/20/19 12:29    3090          3103
1/20/19 12:30    3090          3103
1/20/19 12:31    3094.29       3103

最佳答案

使用pandas.to_datetimerolling.max:

import pandas as pd

df['Timestamp'] = pd.to_datetime(df['Timestamp'])
df = df.set_index('Timestamp')
df['max'] = df['Last'].rolling('15min', min_periods=15).max()
print(df) 

输出:

                        Last     max
Timestamp                           
2019-01-20 12:15:00  3071.56     NaN
2019-01-20 12:17:00  3097.82     NaN
2019-01-20 12:17:00  3097.82     NaN
2019-01-20 12:18:00  3095.25     NaN
2019-01-20 12:19:00  3087.42     NaN
2019-01-20 12:20:00  3095.29     NaN
2019-01-20 12:21:00  3095.25     NaN
2019-01-20 12:22:00  3093.11     NaN
2019-01-20 12:23:00  3103.00     NaN
2019-01-20 12:24:00  3095.00     NaN
2019-01-20 12:25:00  3100.60     NaN
2019-01-20 12:26:00  3099.84     NaN
2019-01-20 12:27:00  3098.77     NaN
2019-01-20 12:29:00  3097.24     NaN
2019-01-20 12:29:00  3090.00  3103.0
2019-01-20 12:30:00  3090.00  3103.0
2019-01-20 12:31:00  3094.20  3103.0

如果您希望将 Timestamp 作为列而不是索引,请添加:

df.reset_index(inplace=True)

关于python - 获取滚动 15 分钟的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55569418/

相关文章:

python sh 库,带连字符/破折号的命令

python - 如何找到数据帧行的平均值?

sql - R的滚动日期范围内的唯一值计数

r - 多变量动态时间规整(DTW)与 R

python - 用 pip 显示反向依赖?

python - 在Python中读取大文件: Why am I getting a Segmentation Fault?

python - Pandas 和多处理内存管理 : Splitting a DataFrame into Multiple Chunks

python - 添加额外的列作为累积时间差: a complex case

hadoop - OpenTSDB 的性能

python - k个离原点最近的点