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

如何基于Date列对DataFrame按月份对name列去重获取唯一行

实现方案

你可以直接用pandas内置的drop_duplicates方法实现需求,核心逻辑是把日期的年月维度和name列共同作为去重的判断条件:

完整代码

import pandas as pd

# 构造你的示例数据
df = pd.DataFrame({
    'Date': ['2015-01-02', '2015-02-02', '2015-02-02', '2015-03-02', '2015-03-02', '2015-03-02'],
    'name': ['Adam', 'David', 'Adam', 'David', 'Hardik', 'David'],
    'Age': [1, 2, 2, 2, 2, 3]
})

# 先把Date列转为datetime类型,方便提取月份
df['Date'] = pd.to_datetime(df['Date'])

# 按「年月+姓名」去重,保留第一次出现的行
df_result = df.drop_duplicates(
    subset = [df['Date'].dt.to_period('M'), 'name'],
    keep = 'first'
)

# 如果需要Date列保持原字符串格式,可加下面这行
df_result['Date'] = df_result['Date'].dt.strftime('%Y-%m-%d')

print(df_result)

代码说明

  • df['Date'].dt.to_period('M') 会将日期转换为「年-月」格式的周期值,用来区分不同月份
  • subset参数指定了去重的判断规则:同一个月份下出现的同名用户,就会被判定为重复行
  • keep='first' 表示保留重复行里第一次出现的记录,和你给出的预期输出完全一致

输出结果

Date    name  Age
0 2015-01-02    Adam    1
1 2015-02-02   David    2
2 2015-02-02    Adam    2
3 2015-03-02   David    2
4 2015-03-02  Hardik    2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 16:15:02