如何在Pandas中获取每行指定范围内的最大值
在Pandas中获取每行指定范围内的列最大值
要实现每行取指定列(比如示例中的A列)最近N个值的最大值,核心是用Pandas的rolling滚动窗口函数,以示例中取最近4个值的需求为例:
步骤1:构造示例数据
import pandas as pd # 生成示例DataFrame data = {'A': [10, 12, 14, 8, 9, 10, 15, 15, 16, 10, 11, 12, 13, 14, 20, 19]} df = pd.DataFrame(data)
步骤2:计算指定范围的最大值
使用rolling(window=4)创建大小为4的滚动窗口,再调用.max()计算窗口内的最大值:
# 为每行计算A列最近4个值的最大值 df['Max_Range'] = df['A'].rolling(window=4).max()
结果说明
- 前3行因为窗口内元素不足4个,结果为
NaN,和示例完全一致 - 从第4行(索引3)开始,每行的
Max_Range值为当前行及之前3行(共4个值)的最大值,比如索引3对应的是A[0:4]的最大值14,索引4对应的是A[1:5]的最大值14,完全匹配示例输出。
如果需要调整窗口范围(比如不包含当前行、或取未来N个值),可以修改rolling的参数,比如设置closed='left'(窗口不包含当前行)、window=4, center=True(窗口以当前行为中心)等,根据实际需求调整即可。
内容的提问来源于stack exchange,提问作者Kucharsky
相关产品推荐
相关产品推荐

