当前位置: 首页 > news >正文

【Pandas】pandas DataFrame expanding

Pandas2.2 DataFrame

Function application, GroupBy & window

方法描述
DataFrame.apply(func[, axis, raw, …])用于沿 DataFrame 的轴(行或列)应用一个函数
DataFrame.map(func[, na_action])用于对 DataFrame 的每个元素应用一个函数
DataFrame.applymap(func[, na_action])用于对 DataFrame 中的每一个元素应用一个函数
DataFrame.pipe(func, *args, **kwargs)用于实现链式编程风格的方法
DataFrame.agg([func, axis])用于对 DataFrame 的数据进行聚合操作
DataFrame.aggregate([func, axis])用于对 DataFrame 进行聚合操作的方法
DataFrame.transform(func[, axis])用于对 DataFrame 的列或行应用函数
DataFrame.groupby([by, axis, level, …])用于进行分组操作的核心方法
DataFrame.rolling(window[, min_periods, …])用于在 DataFrame 上创建滑动窗口对象
DataFrame.expanding([min_periods, axis, method])用于实现扩展窗口计算

pandas.DataFrame.expanding()

pandas.DataFrame.expanding() 用于实现扩展窗口计算,其窗口范围从数据起始点逐步扩展到当前行/列,适用于累积统计量的动态计算。以下是具体解析及示例:


一、函数语法
DataFrame.expanding(min_periods=1, axis=0, method='single')
  • 参数说明
    • min_periods:窗口内要求的最小非空观测数,低于此数返回NaN(默认值 1)。
    • axis:计算方向,0'index' 表示纵向(默认),1'columns' 表示横向。
    • method:仅在使用 engine='numba' 时有效,'single'(逐列计算)或 'table'(全表计算)。

二、使用示例
示例 1:纵向累积求和(默认参数)
import pandas as pd
import numpy as npdf = pd.DataFrame({"B": [0, 1, 2, np.nan, 4]})
result = df.expanding(min_periods=1).sum()
print(result)

输出

     B
0  0.0
1  1.0
2  3.0
3  3.0  # 跳过 NaN,累积前三项 0+1+2=3
4  7.0  # 0+1+2+4=7(NaN 被忽略)

说明:默认按行方向扩展窗口,min_periods=1 表示至少包含 1 个有效值开始计算。NaN 值自动跳过,不影响已累积的有效值。


示例 2:调整最小观测数(min_periods=2)
result = df.expanding(min_periods=2).sum()
print(result)

输出

     B
0  NaN  # 仅 1 个数据,不满足 min_periods=2
1  1.0  # 0+1=1
2  3.0
3  3.0
4  7.0

说明:首行因有效数据不足 min_periods=2 返回 NaN,后续窗口满足条件后正常计算。


示例 3:横向扩展窗口(axis=1)
df = pd.DataFrame({"A": [1, 2], "B": [3, 4], "C": [5, 6]})
result = df.expanding(axis=1).sum()
print(result)

输出

   A    B     C
1  1  4.0   9.0  # 行1横向累积:1 → 1+3=4 → 1+3+5=9
2  2  6.0  12.0  # 行2横向累积:2 → 2+4=6 → 2+4+6=12

说明axis=1 时按列横向扩展窗口,逐行从左到右累积计算。


三、关键特性总结
  1. 动态窗口:窗口大小随数据位置递增,适用于累积计算场景。
  2. NaN 处理:自动跳过空值,但需满足 min_periods 要求。
  3. 灵活方向:通过 axis 参数支持纵向(默认)或横向计算。

相关文章:

  • 【神经网络与深度学习】VAE 和 GAN
  • 信息系统项目管理师-软考高级(软考高项)​​​​​​​​​​​2025最新(十一)
  • vue3父组件修改子组件的值
  • ESP32蓝牙开发笔记(十五)
  • Spring Boot 中的事务管理是如何工作的?
  • EEG设备的「减法哲学」:Mentalab Explore如何用8通道重构高质量脑电信号?
  • Qt 中信号与槽(signal-slot)机制支持 多种连接方式(ConnectionType)
  • 系统架构-云原生架构设计
  • Admyral - 可扩展的GRC工程自动化平台
  • 镜像和容器的管理
  • STM32--中断
  • k8s高可用集群,自动化更新证书脚本
  • 大模型范式转移:解码深度学习新纪元
  • $在R语言中的作用
  • linux_进程地址空间(虚拟地址空间)
  • Linux理解文件fd
  • LWIP的超时事件笔记
  • 处理PostgreSQL数据库事务死锁过程
  • 从机器人到调度平台:超低延迟RTMP|RTSP播放器系统级部署之道
  • Ubuntu20.04安装使用ROS-PlotJuggler
  • 婚姻登记“全国通办”首日观察:数据多跑路,群众少跑腿
  • 中俄就应对美加征所谓“对等关税”等问题进行深入交流
  • 越怕出错越会出错,“墨菲定律”的魔咒该怎么破?
  • 海南省三亚市委原常委、秘书长黄兴武被“双开”
  • 早期投资人蜂巧资本清仓泡泡玛特套现超22亿港元,称基金即将到期
  • 2024年上市公司合计实现营业收入71.98万亿元