python - 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')
但找不到包含大于条件的方法。
任何帮助表示赞赏。谢谢!
解决方案
编辑:试试这个:
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
推荐阅读
- google-bigquery - Connected Sheets Google 电子表格的配额和限制
- flutter - flutter-firestore:如何汇总未读消息的徽章计数
- swift - 执行被中断,原因:信号 SIGABRT
- node.js - docker build 卡在 pm2 start
- ckeditor - 插入后如何将光标移到跨度元素之外?
- flutter - 如何在颤动中更改文本按钮的背景颜色?
- react-native - 为什么我的 React Native 输入字段会不断重置为其初始值?
- c# - StackExchange.Redis 命令超时问题
- php - 碳格式只有闰年的年和日
- android - ConstraintLayout Slide Transition 动画在动画结束前显示视图的全高