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

Pandas中resample()时如何对object列执行ffill/bfill填充?

解决Pandas重采样时Object类型列的填充问题

首先要确保你的Date列是datetime类型并设为索引,否则resample无法正常工作:

import pandas as pd

# 构造示例数据
data = {
    "Date": ["2022-10-23 15:40:41", "2022-10-23 18:43:13", "2022-10-24 15:40:41", "2022-10-24 18:43:13"],
    "Sort": ["A", "B", "C", "D"],
    "Value": [1, 2, 3, 4]
}
df = pd.DataFrame(data)
# 转换为datetime并设为索引
df["Date"] = pd.to_datetime(df["Date"])
df = df.set_index("Date")

接下来有两种常用方法实现需求:

方法一:分列处理后合并

先对Sort列按15分钟频率重采样并执行填充操作,再单独计算Value列的均值,最后合并两个结果:

# 对Sort列重采样并向前填充(ffill),换成bfill()就是向后填充
sort_resampled = df["Sort"].resample("15min").ffill()
# 对Value列重采样求均值
value_resampled = df["Value"].resample("15min").mean()
# 合并结果
result = pd.concat([sort_resampled, value_resampled], axis=1)

方法二:用agg()指定列操作

直接通过resample().agg()为不同列分配对应的处理逻辑,一步得到结果:

result = df.resample("15min").agg({
    "Sort": "ffill",  # 对Sort列执行向前填充
    "Value": "mean"   # 对Value列计算均值
})

注意:如果重采样后的时间段没有原始数据,ffill会沿用最近的前一个有效值,bfill会使用最近的后一个有效值;首尾无对应填充值的时间段会出现NaN,可根据需求用fillna()进一步处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 12:25:59