首页 > 解决方案 > Pandas:如何在滚动窗口中返回 col 值大于“x”的行

问题描述

我有一个很大的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_type=None, on='D') 但找不到包含大于条件的方法。

任何帮助表示赞赏。谢谢!

标签: pythonpandasdataframe

解决方案


编辑:试试这个:

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

推荐阅读