python-3.x - 如何从 Pandas 记录的前 N 行中获取最大值?
问题描述
我有以下熊猫数据框:
date value
2021-01-01 10
2021-01-02 5
2021-01-03 7
2021-01-04 1
2021-01-05 12
2021-01-06 8
2021-01-07 9
2021-01-08 8
2021-01-09 4
2021-01-10 3
我需要从前 N-1 行(计算当前记录)中获取最大值并进行操作。例如:
对于 N=3 并且操作 = current_row / MAX (previous_N-1_rows_and_current),结果应该是:
date value Operation
2021-01-01 10 10/10
2021-01-02 5 5/10
2021-01-03 7 7/10
2021-01-04 1 1/7
2021-01-05 12 12/12
2021-01-06 8 8/12
2021-01-07 9 9/12
2021-01-08 8 8/9
2021-01-09 4 4/9
2021-01-10 3 3/8
如果可能的话,本着 Pythonic 方式的精神。
谢谢并恭祝安康。
解决方案
我们可以计算列rolling
上的最大值,value
然后将value
列除以这个滚动最大值以获得结果
df['op'] = df['value'] / df.rolling(3, min_periods=1)['value'].max()
date value op
0 2021-01-01 10 1.000000
1 2021-01-02 5 0.500000
2 2021-01-03 7 0.700000
3 2021-01-04 1 0.142857
4 2021-01-05 12 1.000000
5 2021-01-06 8 0.666667
6 2021-01-07 9 0.750000
7 2021-01-08 8 0.888889
8 2021-01-09 4 0.444444
9 2021-01-10 3 0.375000
推荐阅读
- vb.net - Visual basic (.net) 插入新记录问题
- angular - 将 @Output EventEmitter 动态添加到 Angular 组件
- python - 这组代码不断循环和循环。我可以知道如何停止循环吗?
- javascript - 如果我使用了 vm.$watch API,是否需要删除组件 destroy() 上的观察者?
- reactjs - 我在做什么错?,正在使用 npx create-react-app app_name 创建反应应用程序。但我不断收到不寻常的错误
- tableau-api - Tableau中如何根据行中的两个条件过滤数据
- python - Python defaultdict(default) vs dict.get(key, default)
- python - 根据可变时间条件将行拆分为多行
- curl - Libcurl 不会在 cookie.txt 中正确写入 cookie
- windows - 从 Windows 远程备份树莓派 sd 卡