如何在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
相关产品推荐
相关产品推荐

