You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用pandas为指定日期匹配预设区间的对应Period编号

实现方案

推荐使用pandas.IntervalIndex实现高效区间匹配,完全满足不修改df_2、不直接合并两个表的要求,代码简洁且适配你的场景规模。

核心实现代码

import pandas as pd

# 1. 基于df2的起止日期构建闭区间索引,绑定对应的Period值
# 区间指定为closed='both',适配日期包含首尾边界的业务需求
period_intervals = pd.IntervalIndex.from_arrays(df_2['From'], df_2['To'], closed='both')
period_mapper = pd.Series(df_2['Period'].values, index=period_intervals)

# 2. 给df1的日期匹配对应Period
df_1['Period'] = df_1['Date'].map(period_mapper)

# 可选:如果存在不在任何区间的日期,可补充默认值,例如填充为0
# df_1['Period'] = df_1['Period'].fillna(0)

方案说明

  • 完全符合约束:全程不会修改df_2的原始数据,也不需要执行两个表的合并操作
  • 性能足够:针对数百条df1数据、50个区间的场景,匹配耗时可忽略,就算df1扩容到十万级也能快速完成
  • 兼容扩展:如果业务中存在区间重叠的情况,只需提前按业务优先级对df_2排序后再构建索引即可,无需修改核心逻辑;如果需要优先匹配后序的重叠区间,构建索引前把df2倒序排列即可。

输出结果

运行代码后得到的df_1和预期结果完全一致:

DatePeriod
1995-03-1244
1980-11-3041
1972-03-0539
1978-12-0340

内容的提问来源于stack exchange,提问作者johnjohn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 15:39:01