Python中如何对DataFrame日期列按指定规则舍入并生成新列
实现方案
首先确保你已经安装了pandas库,处理逻辑如下:
- 先将原数据的
Date列转换为pandas支持的datetime格式,方便做日期运算 - 按照规则判断日期的日部分:
- 日<=15:直接取当月首日
- 日>15:取下月首日,会自动处理12月跨年的场景
代码示例
import pandas as pd # 假设你的DataFrame名为df # 转换Date列为datetime类型 df['Date'] = pd.to_datetime(df['Date'], format='%m/%d/%Y') # 生成Round Date列(向量化实现,性能优于逐行apply) # 先计算所有日期对应的当月首日 current_month_start = df['Date'] - pd.offsets.Day(df['Date'].dt.day - 1) # 根据日的数值判断是否要加1个月 df['Round Date'] = current_month_start.where( df['Date'].dt.day <= 15, current_month_start + pd.DateOffset(months=1) # 如果需要输出为你示例中的字符串格式,保留下面的strftime,不需要可以删掉,保留datetime类型即可 ).dt.strftime('%m/%d/%Y')
运行上述代码后得到的Round Date列就和你给出的预期结果完全一致。
内容的提问来源于stack exchange,提问作者Sriram
相关产品推荐
相关产品推荐

