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

如何仅删除DataFrame中特定列对应的连续重复行?

解决方案

要实现仅删除指定列的连续重复行、保留每组连续重复项第一条的需求,可通过Pandas的shift()偏移函数实现,核心逻辑是比对当前行与前一行的指定列值,仅保留值发生变化的行。

基础实现(全局判断连续重复)

假设你的数据已加载为DataFrame对象df,要针对Event_type列做去重,代码如下:

# 定义需要判断连续重复的目标列
target_col = "Event_type"
# 筛选保留每组连续重复项的第一条
df_filtered = df[df[target_col] != df[target_col].shift(1)].reset_index(drop=True)

逻辑说明

  • df[target_col].shift(1)会将目标列的所有值向下偏移1行,第一行偏移后的值为NaN,默认会被判定为与原值不同,因此第一行一定会被保留
  • 只有当前行目标列值与上一行不同时,才会被判定为新的连续组起始行,保留到结果中
  • 末尾的reset_index(drop=True)用于重置结果的行索引,避免原索引残留造成混乱

拓展实现(分组内判断连续重复)

如果需要按维度分组(比如按Subject、Trial分组后,仅在每组内部判断连续重复),可结合groupby实现:

df_filtered = df.groupby(["Subject", "Trial"], group_keys=False)\
                .apply(lambda group: group[group["Event_type"] != group["Event_type"].shift(1)])\
                .reset_index(drop=True)

针对你提供的示例数据,上述代码执行后,会自动删除第33行的连续Response重复行,仅保留第32行的第一条记录。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 00:09:03