Python Pandas 计算每3行重叠分组的居中窗口行中位数方法
实现3行中心滑动窗口中位数计算
你需要使用pandas内置的滑动窗口方法rolling实现重叠窗口的计算,groupby是固定分块的非重叠分组逻辑,天然不满足滑动窗口的需求,正确实现代码如下:
import pandas as pd import numpy as np # 构造示例DataFrame,实际使用时替换为你自己的数据集即可 df = pd.DataFrame({ 'Index': range(1, 10), 'Duration': [100, 300, 350, 200, 500, 1000, 350, 200, 400] }).set_index('Index') # 核心计算逻辑 df['Median'] = df['Duration'].rolling(window=3, center=True).median() # 输出结果 print(df)
参数说明
window=3:指定单个滑动窗口包含3行数据center=True:将当前行作为窗口的中心,每个窗口自动覆盖当前行的前1行、当前行、后1行,完全匹配你的计算范围要求- 该方法默认对大小不足的窗口返回NaN,无需额外处理即可实现首尾两行Median值为空的要求,且底层做了性能优化,适合大规模数据集使用
运行后输出结果和你给出的预期完全一致。
内容的提问来源于stack exchange,提问作者Thalia
相关产品推荐
相关产品推荐

