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

pandas按条件计算日期整月差值 不足1月返回0的实现方法

实现方案

你的核心思路用月份周期做差是正确的,只需要修正两个细节:一是先确保日期列被正确解析为pandas的datetime类型,二是直接对Period对象做差后取整数差值,不要直接强转Period为int(不同版本下强转逻辑可能不一致)。

完整可运行代码

import pandas as pd

# 第一步:将两列日期解析为datetime格式,自动适配月/日/年的输入格式
df['reg'] = pd.to_datetime(df['reg'])
df['in'] = pd.to_datetime(df['in'])

# 第二步:计算月份差,结果为整数类型,天然满足不足1个月返回0的规则
df['new_month'] = (df['in'].dt.to_period('M') - df['reg'].dt.to_period('M')).apply(lambda x: x.n)

# 可选:如果存在in日期早于reg的异常数据,用下面代码把负数差值统一置为0
# df['new_month'] = df['new_month'].clip(lower=0)

计算逻辑说明

  • 该方案按月份所属周期计算差值,和天级别的间隔无关:同月份的两个日期无论间隔多少天,差值都为0,完全匹配规则要求
  • 自动适配跨年的月份计算,不需要手动处理年份差*12的转换逻辑
  • 计算结果默认是整数类型,不需要额外做类型转换

结果验证

用提供的样例数据运行后,输出和期望完全一致:

reg         in  new_month
0 2021-09-01 2021-09-30          0
1 2021-09-08 2021-11-22          2
2 2021-09-08 2022-01-13          4
3 2021-10-01 2021-10-15          0
4 2022-11-02 2023-05-01          6

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 11:06:24