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

pandas中如何将DataFrame各行数据除以对应月份的天数

逐行除以对应月份天数的实现方案

样例中行索引0对应2022年1月(共31天)、行1对应2022年2月(2022是平年,共28天)、行2对应2022年3月(共31天)。
直接用pandas原生向量化运算实现即可,不需要写循环逐行处理,原表中的NaN值会自动保留,不需要额外做缺失值预处理:

  • 第一步:严格按照DataFrame的行顺序,构造对应月份的天数列表
# 顺序和行顺序一一对应:1月、2月、3月的自然天数
month_days = [31, 28, 31]
  • 第二步:调用div()方法做按行广播除法,必须指定参数axis=0,表示按行对齐做运算——即每一行的所有数值列,都除以该行对应的天数
df = df.div(month_days, axis=0)

踩坑提醒

  • 别直接写df / month_days:pandas默认四则运算是按列对齐广播,直接相除会把列表值按列顺序匹配,列数和列表长度不一致时会直接报错,必须显式指定axis=0才能按行对齐运算。
  • 该方法是向量化实现,比用apply逐行计算的效率高很多,数据量越大优势越明显。
  • 后续如果要追加新月份的行,只需要把对应月份的天数按行顺序追加到month_days列表里即可,不需要修改核心运算逻辑。
    运算完成后的输出结果如下:
A          B      C           D          E          G
0  7.129032   3.838710  14.677         NaN  21.838710        NaN
1  12.214286  43.678571   4.75  130.785714        NaN  11.464286
2  8.129032        NaN   1.71         NaN        NaN        NaN

如果涉及闰年2月、或者跨更多年份月份的场景,只需要调整month_days列表里的对应天数即可,逻辑完全通用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 05:12:19