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

基于时段填充列值:按10分钟重采样并从指定时间向后填充数据

基于时段填充列值:按10分钟重采样并从指定时间向后填充数据

我明白你想要实现的需求了——按10分钟间隔重采样数据,并且只在每天从06:00开始到对应记录时间的这段窗口内,用该记录的值填充,其余时段保留NaN。下面我来一步步教你用Pandas实现这个逻辑:

  • 首先确保时间戳列是datetime类型并设置为索引,这是Pandas处理时间序列的基础:
import pandas as pd

# 假设你的数据已经读入DataFrame
df['timestamp'] = pd.to_datetime(df['timestamp'])
df = df.set_index('timestamp')
  • 生成覆盖所需时段的完整10分钟重采样时间序列,我们从最早记录日期的06:00开始,到最晚记录日期次日的06:00结束,保证所有需要的时段都被覆盖:
# 计算重采样的起始和结束时间
start_time = df.index.min().normalize() + pd.Timedelta(hours=6)
end_time = df.index.max().normalize() + pd.Timedelta(days=1, hours=6)
# 生成10分钟间隔的时间索引
resampled_index = pd.date_range(start=start_time, end=end_time, freq='10T')
# 创建空的重采样DataFrame
resampled_df = pd.DataFrame(index=resampled_index, columns=['col1'])
  • 遍历每个原始数据点,精准填充对应的时间窗口:
    对于每条记录,我们只填充当天06:00到该记录时间的最后一个10分钟整点之间的所有间隔,之后的时段保持NaN,完全匹配你想要的效果:
for idx, row in df.iterrows():
    # 获取当前记录日期的06:00
    day_start = idx.normalize() + pd.Timedelta(hours=6)
    # 获取记录时间的前一个10分钟整点(比如09:21:00对应09:20:00)
    last_interval = idx.floor('10T')
    # 只有当天06:00早于等于这个整点时才进行填充
    if day_start <= last_interval:
        # 筛选出需要填充的时间范围
        fill_mask = (resampled_df.index >= day_start) & (resampled_df.index <= last_interval)
        resampled_df.loc[fill_mask, 'col1'] = row['col1']

运行完这段代码后,resampled_df就是你想要的结果啦——每天从06:00开始用对应记录的值填充,直到该记录时间的前一个10分钟间隔,之后到次日06:00前都是NaN,下一条记录则从次日06:00开始重复这个逻辑。

备注:内容来源于stack exchange,提问作者prof32

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 10:49:12