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

如何在Pandas中无需循环计算并展示比特币平均价格

Pandas 无循环实现累计平均价格计算

你需要实现的逐行截至当日的累计平均价格,本质是对Adj Close列做从序列起始到当前行的扩展窗口均值计算,不需要写for循环,直接用Pandas内置的向量化方法就能实现,运算效率远高于原生Python循环。

实现方案

方案1:扩展窗口直接计算(语义最匹配)

Pandas的expanding()方法会生成从第一行逐行扩大到当前行的计算窗口,直接调用均值聚合方法就能得到你要的结果,逻辑和原循环完全一致:

# min_periods=1 表示从第一行开始就参与计算,不需要凑满窗口长度
btc['TopAverage'] = btc['Adj Close'].expanding(min_periods=1).mean()

方案2:累计和除以累计计数(原理和原循环完全对齐)

如果你想完全对齐原循环里「累计求和+天数计数」的计算逻辑,可以用累计和方法搭配行序号实现:

# cumsum() 得到截至当日的收盘价总和,除以累计天数得到均值
btc['TopAverage'] = btc['Adj Close'].cumsum() / range(1, len(btc)+1)

注意事项

  • 计算前请确认Adj Close列是数值类型,如果是存储为字符串的数值,先执行btc['Adj Close'] = btc['Adj Close'].astype(float)转换类型再计算
  • 两种方案的计算结果和你提供的for循环输出完全一致,没有精度差异

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 17:36:28