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

如何根据前一行数据变化过滤Pandas DataFrame行?

如何在Pandas中仅保留Value列与前一行有变化的行

要实现只保留任意Value列与前一行相比有变化的行(连续相同值仅留第一行),不能用常规的drop_duplicates(subset=...)——因为它会全局去重,哪怕非连续的重复组合也会被删掉。这里用相邻行对比的方法就能解决:

步骤1:构造示例数据

先模拟你提到的场景(需要保留第1、3、5行):

import pandas as pd

data = {
    'Timestamp': ['08:00', '08:01', '08:02', '08:03', '08:04'],
    'Value 1': [10, 10, 15, 15, 15],
    'Value 2': [20, 20, 20, 20, 25]
}
df = pd.DataFrame(data)

步骤2:检测相邻行的变化

用shift()获取上一行的Value列数据,再用ne()(不等于)对比当前行和上一行,最后用any(axis=1)判断任意一列是否有变化:

# 针对Value列生成差异掩码
value_cols = ['Value 1', 'Value 2']
mask = df[value_cols].ne(df[value_cols].shift()).any(axis=1)

# 筛选出符合条件的行
result_df = df[mask]

结果验证

运行后result_df会保留第1、3、5行,完全符合需求:

Timestamp  Value 1  Value 2
0     08:00       10       20
2     08:02       15       20
4     08:04       15       25

拓展说明

如果有更多Value列(比如Value 3、Value 4),只需要修改value_cols列表,把所有需要检测的列加进去即可,逻辑完全通用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 05:45:41