得到最后n个周期的高潮和高潮

2024-10-17 06:30:44 发布

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

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

我有一个dataframe,对于其中一列,我想放置一个最大值为过去3个值的新列(或者对于给定的过去时间帧)。你知道吗

例如,我想从timestamp和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循环来实现这一点,但效率很低。那么,还有更快的选择吗?你知道吗


Tags: 数据方法numpydataframepandas时间timestamplist
1条回答
网友
1楼 · 发布于 2024-10-17 06:30:44

看起来您希望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]

相关问题 更多 >