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

如何在Pandas DataFrame中计算相邻日期的月份差值?

计算DataFrame相邻日期的月份差值并生成新字段

需求:现有包含日期字段d的DataFramedf,需新增nb month字段,值为下一行d与当前行d的月份差。

实现代码

import pandas as pd
data = {'id': [1, 2, 3], 'd': ['2020-01-01', '2021-06-15', '2022-12-28']}
df = pd.DataFrame(data)
# 将字符串日期转为datetime类型,为日期计算做准备
df['d'] = pd.to_datetime(df['d'])
# 计算相邻行的月份差:将日期转为月份周期后做减法
df['nb month'] = df['d'].shift(-1).dt.to_period('M') - df['d'].dt.to_period('M')

代码说明

  • pd.to_datetime(df['d']):把原始的字符串日期转换为pandas可识别的datetime格式,这是日期运算的基础。
  • df['d'].shift(-1):将日期列整体向上偏移一行,让当前行能获取到下一行的日期值。
  • dt.to_period('M'):将datetime类型转换为月份周期(Period)类型,这样直接相减就能得到两个日期之间的月份数差值,无需手动拆分年、月计算差值。
  • 最后一行的nb month值会是NaN,因为没有对应的下一行数据,若需要可根据需求用fillna()填充(比如df['nb month'] = df['nb month'].fillna(0))。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 00:54:53