Pandas日期计算:筛选日期加6个月后超过当日的行
解决方法
首先,不要用pd.timedelta加固定天数——不同月份天数差异大(比如2月的28/29天、31天的大月等),直接加181天会导致日期计算偏差。正确做法是用pd.DateOffset(months=6)来精确添加6个月。
以下是完整实现步骤:
- 导入pandas并创建示例DataFrame
import pandas as pd # 示例数据 df = pd.DataFrame({ 'date': pd.to_datetime(['2022-05-01', '2022-06-15', '2022-07-01', '2022-12-01']) })
- 添加“加6个月后的日期”列
df['date_plus_6months'] = df['date'] + pd.DateOffset(months=6)
- 定义当日日期(按示例用2022-12-06,若要获取真实当日日期可改用
pd.Timestamp.today().normalize())
today = pd.to_datetime('2022-12-06')
- 筛选出加6个月后日期晚于当日的行,保留原日期和新日期列
filtered_df = df[df['date_plus_6months'] > today][['date', 'date_plus_6months']]
- 查看结果
print(filtered_df)
输出示例:
date date_plus_6months 2 2022-07-01 2023-01-01 3 2022-12-01 2023-06-01
如果需要额外添加布尔列标记是否符合条件,可在筛选前补充:
df['is_after_today'] = df['date_plus_6months'] > today # 筛选时可保留布尔列:df[df['is_after_today']][['date', 'date_plus_6months', 'is_after_today']]
关键说明
pd.DateOffset(months=6)会自动处理月份天数差异,比如2022-02-28加6个月得到2022-08-28,2020-02-29加6个月得到2020-08-29,比固定天数计算更准确。- 确保所有日期列是
datetime类型,避免类型错误导致筛选失效。
内容的提问来源于stack exchange,提问作者Deidraak
相关产品推荐
相关产品推荐

