Python 熊猫:如何返回col值大于';x';在滚动窗口中

Python 熊猫:如何返回col值大于';x';在滚动窗口中,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个大的df,我试图找到所有行,其中特定列中的值高于给定的数字,但在一个窗口内,比如说3行,并且只返回在给定数字上具有最高值的行 A B C D E 1 5 9 10 15 2 4 7 12 16 3 3 5 10 18 4 2 3 15 17 5 1 1 10 14 6 5 9 17 13 7 4 7 10 14

我有一个大的df,我试图找到所有行,其中特定列中的值高于给定的数字,但在一个窗口内,比如说3行,并且只返回在给定数字上具有最高值的行

A    B    C    D    E
1    5    9    10   15
2    4    7    12   16
3    3    5    10   18
4    2    3    15   17
5    1    1    10   14
6    5    9    17   13
7    4    7    10   14
8    3    5    19   19
9    2    3    10   18
10   4    7    5   14
11   3    5    6   19
12   2    3    7   18
如果我想对D列的上述示例执行此操作,其中值必须大于11,则输出将为

A    B    C    D    E
2    4    7    12   16
6    5    9    17   13
8    3    5    19   19.
最好的办法是什么

我试过:
df.rolling(3,win\u type=None,on='D')
但无法找到包含大于条件的方法

任何帮助都是值得感激的。谢谢

编辑: 试试这个:

threshold = 11
window = 3
df['r'] = np.floor(df.index / window)
print(df.groupby('r').apply(lambda x : (x.loc[x['D'] == x['D'].max() ,:]) if x['D'].max() > threshold else None))
使用后可以删除列“r”

输出:

      A  B  C   D   E    r
r                          
0.0 1  2  4  7  12  16  0.0
1.0 5  6  5  9  17  13  1.0
2.0 7  8  3  5  19  19  2.0
已编辑: 试试这个:

threshold = 11
window = 3
df['r'] = np.floor(df.index / window)
print(df.groupby('r').apply(lambda x : (x.loc[x['D'] == x['D'].max() ,:]) if x['D'].max() > threshold else None))
使用后可以删除列“r”

输出:

      A  B  C   D   E    r
r                          
0.0 1  2  4  7  12  16  0.0
1.0 5  6  5  9  17  13  1.0
2.0 7  8  3  5  19  19  2.0

这回答了你的问题吗?不完全是,我不想返回每个窗口中的最大值,因为有时值会低于我想要设置的最小值。我认为任何pandas方法都不会有帮助,您应该使用simple for loop解析。如果你想要的话,我可以帮你。这能回答你的问题吗?不完全是,我不想返回每个窗口中的最大值,因为有时值会低于我想要设置的最小值。我认为任何pandas方法都不会有帮助,您应该使用simple for loop解析。如果你想要的话,我可以帮你。这成功了!尽管如此,我还是不太明白。非常感谢。为所需窗口创建组,并通过
groupby
lambda
实现组的所需过滤,这是有效的!尽管如此,我还是不太明白。非常感谢。为所需窗口创建组,并通过
groupby
lambda