python - 获取向量最后 n 个周期的高点和低点

标签 python pandas dataframe

在Python中给定时间范围内从list/numpy/vector/pandas列中获取最大值的最佳方法是什么?

我有一个 pandas 数据框,对于其中一列,我想放置一个新列,其中包含过去 3 个值(或给定的过去时间范围)的最大值。

例如,我想仅从时间戳和 value1 列开始构建此数据框:

timestamp   value1  max3    min3
10:00:00    8       NA      NA
10:00:05    2       NA      NA
10:00:10    5       NA      NA
10:00:15    7       8       2
10:00:20    10      7       2

我可以使用 for 循环轻松地做到这一点,但效率非常低。那么,还有更快的替代方案吗?

最佳答案

看起来您想要将 rolling_maxrolling_minshift 结合使用,因为您不想将当前值包含在计算:

In [17]: df
Out[17]: 
                     value1
timestamp                  
2014-01-10 10:00:00       8
2014-01-10 10:00:05       2
2014-01-10 10:00:10       5
2014-01-10 10:00:15       7
2014-01-10 10:00:20      10

[5 rows x 1 columns]

In [18]: df['max3'] = pd.rolling_max(df['value1'], window=3).shift()

In [19]: df['min3'] = pd.rolling_min(df['value1'], window=3).shift()

In [20]: df
Out[20]: 
                     value1  max3  min3
timestamp                              
2014-01-10 10:00:00       8   NaN   NaN
2014-01-10 10:00:05       2   NaN   NaN
2014-01-10 10:00:10       5   NaN   NaN
2014-01-10 10:00:15       7     8     2
2014-01-10 10:00:20      10     7     2

[5 rows x 3 columns]

关于python - 获取向量最后 n 个周期的高点和低点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21056492/

相关文章:

python - 如何通过从组中减去元素来创建变量?例如,每组每行的值 - 组值的第一行

python - 如何在箱形图2上绘制来自不同数据帧的数据 - Python

join - 如何将数据框与 Pandas 连接起来?

python - 类内的装饰器和没有 'self' 的装饰类方法给出了奇怪的结果

python - “欧洲/马德里”时区与 'Etc/GMT+1' 不匹配

python - 为什么我的 Python 正则表达式模式运行如此缓慢?

python - Pandas 数据框中的内部连接/合并提供比左侧数据框更多的行

python - 获取字典的随机样本

python - Pandas 数据帧 : How to groupby on a groupby?

python - 尝试使用函数中定义的数据框名称时发生意外的名称错误