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

如何在Pandas DataFrame中新增列计算月度总值除以当月天数的结果

实现方案

获取月份总天数的方法

Python里获取指定月份天数不需要手动判断大小月、闰年,两种常用方案:

  • 批量处理Pandas数据时,直接用Pandas datetime类型自带的dt.days_in_month属性,自动识别闰年、大小月,直接返回整列每个日期对应月份的总天数,不需要逐行循环,效率最高。
  • 单独获取单个月份天数时,用Python标准库calendar模块的monthrange函数即可,调用格式为calendar.monthrange(年份, 月份)[1],返回值就是对应月份的总天数,比如calendar.monthrange(2020,2)[1]返回29,会自动识别2020是闰年。

DataFrame计算完整流程

针对你给出的样例数据,完整代码如下:

import pandas as pd

# 构造样例数据
df = pd.DataFrame({
    'Month': ['Nov. 2019', 'Dec. 2019', 'Jan. 2020', 'Feb. 2020'],
    'Total': [45345, 87493, 45765, 38756]
})

# 1. 将字符串格式的月份列解析为Pandas datetime类型,默认解析为当月1日
df['temp_month'] = pd.to_datetime(df['Month'], format='%b. %Y')

# 2. 计算日均总值:月度总值除以当月天数,结果存入新列
df['Daily Total'] = df['Total'] / df['temp_month'].dt.days_in_month

# 3. (可选)删除中间用到的临时解析列
df = df.drop(columns='temp_month')

运行后得到的结果如下,完全符合需求:

Month  Total  Daily Total
0  Nov. 2019  45345  1511.500000
1  Dec. 2019  87493  2822.354839
2  Jan. 2020  45765  1476.290323
3  Feb. 2020  38756  1336.413793

注意:如果你的月份字符串格式和样例有差异,只需要调整pd.to_datetime里的format匹配规则即可,当前规则里%b匹配英文月份缩写,. 匹配缩写后的点和空格,%Y匹配四位年份。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 22:12:51