You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

pandas DataFrame如何新增列计算从首行到当前行的累计中位数

pandas DataFrame 累计中位数计算方案

你需要的是扩展窗口(expanding window)的中位数计算,pandas内置的expanding()方法可以直接满足需求,无需自行实现遍历逻辑。


完整可运行代码示例

import pandas as pd

# 示例:构造测试DataFrame,实际使用时替换为你自己的数据集即可
df = pd.DataFrame({
    "float_col": [1.5, 2.3, 0.9, 4.2, 3.7] # 对应你的float类型数值列
})

# 核心实现:新增累计中位数列,expanding()默认窗口范围为第1行到当前行
df["cum_median"] = df["float_col"].expanding().median()

# 输出查看结果
print(df)

说明

  • 把代码里的float_col替换为你实际要计算的float列名即可直接使用
  • expanding()方法生成的窗口会随行索引向下逐步扩展,始终包含从首行到当前行的所有数据,完全符合「每一步基于当前全部已知数据计算」的要求
  • 该方法为pandas原生优化实现,计算效率远高于手动写for循环逐行计算
  • 如果需要自定义中位数计算规则,可以用expanding().apply()实现自定义逻辑,示例如下:
# 自定义中位数计算逻辑示例
def custom_median(window):
    sorted_win = sorted(window)
    n = len(sorted_win)
    return sorted_win[n//2] if n%2 ==1 else (sorted_win[n//2-1]+sorted_win[n//2])/2

df["cum_median_custom"] = df["float_col"].expanding().apply(custom_median, raw=True)

内容的提问来源于stack exchange,提问作者user3239711

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 17:06:03