如何基于DataFrame的MyMonth列动态生成月初月末等时间字段?
实现方案
你可以直接借助pandas内置的日期处理能力完成批量计算,不需要逐行遍历,性能更高,完整实现代码如下:
- 第一步:导入依赖库
import pandas as pd import datetime
- 第二步:转换MyMonth字段为日期类型,批量生成目标列
# 读取你的DataFrame后先执行日期格式转换 df['month_temp'] = pd.to_datetime(df['MyMonth'], format='%b-%Y') # 生成当月第一天 df['StartDate'] = df['month_temp'].dt.to_period('M').dt.to_timestamp() # 生成下月第一天 df['NextmonthDate'] = df['StartDate'] + pd.DateOffset(months=1) # 生成当月最后一天23:59:59 df['EndDate'] = df['NextmonthDate'] - datetime.timedelta(seconds=1) # 生成往后12个月第一天(匹配示例逻辑,从下月开始算12个月) df['Next12MonthDate'] = df['NextmonthDate'] + pd.DateOffset(months=12) # 删除中间临时列 df = df.drop(columns=['month_temp'])
- 可选步骤:如果需要将日期转成示例中的字符串格式,可追加如下代码
date_cols = ['StartDate', 'EndDate', 'NextmonthDate', 'Next12MonthDate'] for col in date_cols: df[col] = df[col].dt.strftime('%Y-%m-%d %H:%M:%S')
内容的提问来源于stack exchange,提问作者Ash
相关产品推荐
相关产品推荐

