Python实现Excel EOMONTH功能 从DataFrame日期列计算月末季末日期
实现方案
基于Pandas即可快速实现该需求,操作步骤如下:
- 第一步:先将字符串格式的
date列转换为Pandas datetime类型,原日期格式为日/月/年,需要指定dayfirst=True避免解析错误 - 第二步:使用Pandas内置的日期偏移量计算当月月末、当季最后一天,偏移量参数传
0保证返回当前周期的最后一天,不会跳转到下一个周期 - 第三步:把所有日期列格式化为和原列一致的
日/月/年字符串格式即可
完整可运行代码
import pandas as pd from pandas.tseries.offsets import MonthEnd, QuarterEnd # 构造样例数据,实际使用时替换为你自己读取DataFrame的逻辑即可 df = pd.DataFrame({ 'date': ['28/09/1995', '30/10/1993', '26/02/2021', '04/04/2020'] }) # 转换日期列为datetime类型 df['date'] = pd.to_datetime(df['date'], dayfirst=True) # 计算月末、季末日期 df['end of month'] = df['date'] + MonthEnd(0) df['end of quarter'] = df['date'] + QuarterEnd(0) # 统一格式化日期为日/月/年格式 for col in ['date', 'end of month', 'end of quarter']: df[col] = df[col].dt.strftime('%d/%m/%Y') print(df)
运行输出的结果和你给出的示例完全一致,该写法自动兼容闰年2月的特殊场景,不需要额外做边界判断。
内容的提问来源于stack exchange,提问作者Abishay Mathew
相关产品推荐
相关产品推荐

