Python计算两个日期月差:去除多余内容并转为整数
解决Pandas中日期字段计算整数月差的问题
步骤1:转换日期字段类型
原始日期字段为object类型,无法直接进行精准的月份运算,首先要转为pandas的datetime类型:
import pandas as pd # 替换为你的DataFrame和字段名 df['start_date'] = pd.to_datetime(df['start_date']) df['end_date'] = pd.to_datetime(df['end_date'])
步骤2:计算精准整数月差
直接相减日期会得到包含days信息的Timedelta对象,要获取整数月差,最精准的方式是通过年份和月份的差值计算:
# 计算(年差×12) + 月差,得到整数月数 df['month_diff'] = (df['end_date'].dt.year - df['start_date'].dt.year) * 12 + (df['end_date'].dt.month - df['start_date'].dt.month)
此时month_diff列的结果是纯整数,无多余的时间或文字信息。
可选:转换已有Timedelta结果为整数月差
如果已经得到了Timedelta类型的日期差,可通过平均每月天数估算月差(适合近似场景,精度略低于上述方法):
# 假设已有的Timedelta列名为date_diff df['month_diff'] = (df['date_diff'].dt.days / 30.4375).astype(int)
内容的提问来源于stack exchange,提问作者Ropolola
相关产品推荐
相关产品推荐

