如何迭代 pandas 数据帧中每一行的下 N 个元素的 window

How to iterate over window of next N elements for each row in pandas dataframe

我在数据框中标记行时遇到问题。这个想法是我想知道当前(迭代)值乘以小浮点数是否高于数据帧中接下来的 60 行中的任何一行。

我已经找到了一个可行的解决方案,但不幸的是速度很慢。我尝试使用 .apply 和列表​​理解来实现,但失败了。

代码如下所示:

    for i in range(df.shape[0] - 1):
        label.append((df.iloc[i+1:window+i]['value'] > df.iloc[i]['value'] * small_threshold).any())

所以基本上可以说我有这个 df

idx value
0 2.00
1 2.01
2 1.98
3 2.01
4 2.02

我想针对接下来的 3 行标记每一行。为了更容易,我将跳过当前行值的乘法。因此,目标是如果任何值高于当前值则将行标记为 True,如果没有值则标记为 False(关于接下来的 3 行)

idx value label
0 2.00 true
1 2.01 true
2 1.98 false
3 2.01 NaN
4 2.02 NaN

在你的情况下检查 rolling

df['new'] = df.value.shift(-1).iloc[::-1].rolling(3).max().ge(df.value)
Out[56]: 
0     True
1     True
2    False
3    False
4    False
Name: value, dtype: bool