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

在Pandas中移除无效值以正确重建累积时序数据

处理累积时序数据中的无效值,替换为NaN

已知从文本提取的累积型时序数据集存在无效值(累积数据应随时间递增,部分值不符合该规则),需要将这些无效值替换为NaN。

原始数据示例:

df
date         value
2021-07-20   21347.0
2021-07-24   21739.0
2021-08-02   22.0
2021-08-03   22.0
2021-08-06   22947.0
2021-08-17   4.0

期望输出:

df
date         value
2021-07-20   21347.0
2021-07-24   21739.0
2021-08-02   nan
2021-08-03   nan
2021-08-06   22947.0
2021-08-17   nan

解决方案

累积型时序数据的核心规则是当前值必须大于等于历史最大值(累积数据不会随时间减少),基于这个规则可以快速过滤无效值:

  1. 确保日期列格式正确(若未转换):
import pandas as pd
df['date'] = pd.to_datetime(df['date'])
  1. 计算value列的累积最大值,将不符合规则的值替换为NaN:
# 计算截至每行的历史最大值
cumulative_max = df['value'].cummax()
# 保留大于等于累积最大值的数值,其余替换为NaN
df['value'] = df['value'].where(df['value'] >= cumulative_max)

如果数据存在微小统计误差(如极小幅度的下降),可设置容差阈值,比如允许当前值不低于累积最大值的99%:

df['value'] = df['value'].where(df['value'] >= cumulative_max * 0.99)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 00:25:33