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

如何基于另一索引的ffill/bfill/nearest值构造Pandas Series?

解决方案

一、DatetimeIndex 场景实现

首先构造基础索引和Series:

import pandas as pd

idx1 = pd.DatetimeIndex(['2023-06-02', '2023-06-04', '2023-06-06', '2023-06-08', '2023-06-10', '2023-06-12'])
idx2 = pd.DatetimeIndex(['2023-06-03', '2023-06-08'])
# 构造以idx2为索引、值为自身索引的Series
s2 = pd.Series(idx2, index=idx2)

1. 最近值填充(nearest)

直接使用reindex的method='nearest'参数,自动匹配最近的索引值:

nearest_series = s2.reindex(idx1, method='nearest')

输出结果:

2023-06-02   2023-06-03
2023-06-04   2023-06-03
2023-06-06   2023-06-08
2023-06-08   2023-06-08
2023-06-10   2023-06-08
2023-06-12   2023-06-08
dtype: datetime64[ns]

2. 向后填充(bfill)

method='bfill'会取当前索引之后第一个存在的idx2值,无匹配则返回NaN:

bfill_series = s2.reindex(idx1, method='bfill')

输出结果:

2023-06-02          NaT
2023-06-04   2023-06-03
2023-06-06   2023-06-03
2023-06-08   2023-06-08
2023-06-10   2023-06-08
2023-06-12   2023-06-08
dtype: datetime64[ns]

3. 向前填充(ffill)

method='ffill'会取当前索引之前最后一个存在的idx2值,无匹配则返回NaN:

ffill_series = s2.reindex(idx1, method='ffill')

输出结果:

2023-06-02   2023-06-03
2023-06-04   2023-06-08
2023-06-06   2023-06-08
2023-06-08   2023-06-08
2023-06-10          NaT
2023-06-12          NaT
dtype: datetime64[ns]

二、数值型等其他有序索引场景

对于数值型索引(如Int64Index、Float64Index),逻辑完全一致——因为reindex的填充方法支持所有有序索引类型。

举个数值型索引示例:

num_idx1 = pd.Int64Index([1, 3, 5, 7, 9, 11])
num_idx2 = pd.Int64Index([2, 8])
s_num = pd.Series(num_idx2, index=num_idx2)

# 最近值填充
num_nearest = s_num.reindex(num_idx1, method='nearest')
# 向后填充
num_bfill = s_num.reindex(num_idx1, method='bfill')
# 向前填充
num_ffill = s_num.reindex(num_idx1, method='ffill')

输出逻辑与DatetimeIndex完全对应:

  • 最近值结果:1→2,3→2,5→8,7→8,9→8,11→8
  • 向后填充结果:1→NaN,3→2,5→2,7→8,9→8,11→8
  • 向前填充结果:1→2,3→8,5→8,7→8,9→NaN,11→NaN

补充说明

  • 若需自定义最近值的匹配公差,可在reindex中添加tolerance参数,比如DatetimeIndex场景设置tolerance=pd.Timedelta(days=1),超过1天的匹配会返回NaN。
  • 非有序索引(如无排序逻辑的字符串索引)无法使用method参数,因为无法定义“前后”或“最近”的逻辑,需通过其他方式(如字符串相似度匹配)处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 18:22:54