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

在R中按首次出现日期和Names保留记录的实现方法

按ID分组保留每个Names首次出现的行

我有一个包含ID、Date、Code和Names列的DataFrame,同一ID在不同日期有多个条目,Names列的值可能相同或不同。示例数据如下:

ID       Date        Code      Names
1     2010-12-09     1.1.1     Alpha
1     2010-12-15     1.1.1     Alpha
1     2010-12-15     1.1.1     Beta
2     2010-12-09     1.1.1     Beta
2     2010-12-17     1.1.1     Beta
3     2011-02-09     1.1.1     Gamma
3     2011-04-25     1.1.1     Gamma
4     2011-04-25     1.1.1     Tango

需求:按ID分组,保留每个ID下每个Names首次出现日期对应的行,删除其他日期的同名重复行。期望结果如下:

ID       Date        Code      Names
1     2010-12-09     1.1.1     Alpha
1     2010-12-15     1.1.1     Beta
2     2010-12-09     1.1.1     Beta
3     2011-02-09     1.1.1     Gamma
4     2011-04-25     1.1.1     Tango

(注:原期望结果中的ID6为笔误,应为ID4)

解决方案(Pandas实现)

  1. 先将Date列转换为日期类型,确保排序逻辑正确:
import pandas as pd

df['Date'] = pd.to_datetime(df['Date'])
  1. 方法一:使用groupby + first
    先按日期排序,再按ID和Names分组,取每组的第一行(即首次出现的记录):
result = df.sort_values('Date').groupby(['ID', 'Names'], as_index=False).first()
  1. 方法二:使用drop_duplicates
    同样先按日期排序,然后基于ID和Names去重,保留首次出现的行:
df_sorted = df.sort_values('Date')
result = df_sorted.drop_duplicates(subset=['ID', 'Names'], keep='first')

两种方法均能得到符合需求的结果,最终输出的result即为目标DataFrame。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 15:52:41