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

如何基于Key与Date条件删除重复观测值而非求和?

移除Key和Date重复行的简便方法

嘿,我来帮你搞定这个问题!要删除Key和Date完全相同的重复观测值(不用求和),其实有好几种顺手的方法,看你常用哪种数据分析工具:

在R里的操作

方法1:用dplyr包的distinct函数(推荐,代码易读)

如果你习惯用tidyverse系列的工具,dplyr的distinct()函数直接就能搞定,还能保留其他列的内容:

library(dplyr)
# 假设你的数据集存储在名为df的数据框里
df_cleaned <- df %>%
  distinct(Key, Date, .keep_all = TRUE)
  • 加.keep_all = TRUE是为了保留除了Key和Date之外的所有列,不然默认只会返回这两列的唯一组合。
  • 要是你想保留每组重复行里的最后一行而不是第一行,可以用.keep_last = TRUE(dplyr 1.1.0及以上版本支持),或者先按行号倒序再去重。

方法2:基础R原生方法(不用装包)

如果不想额外安装包,用基础R的duplicated()函数也能实现:

# 保留每组重复行的第一行
df_cleaned <- df[!duplicated(df[c("Key", "Date")]), ]

# 要是想保留最后一行,加fromLast=TRUE参数
df_cleaned <- df[!duplicated(df[c("Key", "Date")], fromLast = TRUE), ]

在Python(Pandas)里的操作

Pandas的drop_duplicates()函数专门处理这类需求,非常灵活:

import pandas as pd
# 假设你的数据集存储在名为df的DataFrame里
df_cleaned = df.drop_duplicates(subset=['Key', 'Date'], keep='first')
  • subset参数指定用来判断重复的列(这里就是Key和Date)
  • keep='first'表示保留每组重复行的第一行,换成keep='last'就能保留最后一行;如果想把所有重复行(包括第一次出现的)都删掉,用keep=False就行。

这些方法都是直接移除重复观测值,不会对数值做求和或其他聚合操作,完全符合你的需求~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:23:55