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

Python中基于前值递增加1分钟填充缺失Timestamp字段的问题

问题分析与解决方案

你忽略了两个关键问题:

  1. "N/A"不是Pandas识别的缺失值
    数据里的N/A是普通字符串,而非Pandas认可的NaN/NaT缺失标记,所以df['Timestamp'].isna()会返回全False,根本没触发填充逻辑。isna()仅识别np.nan、pd.NA、NaT这类特殊缺失值,字符串"N/A"会被判定为有效数据。

  2. 连续缺失值的填充逻辑错误
    就算N/A转为真正的缺失值,你的代码会让所有连续缺失值变成同一个时间:ffill会把所有缺失值替换成最近的前一个非缺失值,再统一加1分钟,导致第5、6行时间都是00:03 + 1分钟 = 00:04,无法实现逐分钟递增的效果。


正确处理步骤

第一步:转换时间类型并处理字符串缺失值

先将Timestamp转为datetime类型,同时把"N/A"转为时间类型缺失值NaT:

import pandas as pd

# 构造示例数据
data = {
    'Timestamp': ['01-04-2024 00:00', '01-04-2024 00:01', '01-04-2024 00:02', '01-04-2024 00:03', 'N/A', 'N/A', '01-04-2024 00:06'],
    'record_id': [1,2,3,4,5,6,7]
}
df = pd.DataFrame(data)

# 转换为datetime,将无法解析的"N/A"转为NaT
df['Timestamp'] = pd.to_datetime(df['Timestamp'], errors='coerce')

第二步:按连续缺失组填充递增时间

通过分组标记,给每个连续缺失组计算相对于前一个有效时间的偏移量,实现逐分钟递增:

# 创建分组:每遇到一个非缺失值,开启新分组
group = df['Timestamp'].notna().cumsum()

# 对每个分组,用组内第一个有效时间加上行索引的偏移量(分钟)
df['Timestamp'] = df.groupby(group)['Timestamp'].transform(
    lambda x: x.iloc[0] + pd.to_timedelta(x.index - x.first_valid_index(), unit='minutes')
)

处理后的数据如下:

Timestamprecord_id
2024-04-01 00:00:001
2024-04-01 00:01:002
2024-04-01 00:02:003
2024-04-01 00:03:004
2024-04-01 00:04:005
2024-04-01 00:05:006
2024-04-01 00:06:007

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 16:43:36