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

Pandas:对日期更早的重复项设置isActive为True并修改Name列

解决方案

我们可以通过分组标记+条件批量修改来实现需求,具体操作如下:

完整代码实现

import pandas as pd

# 初始化示例DataFrame
df = pd.DataFrame({
    'Name': ['John', 'John', 'Fred'],
    'isActive': [False, False, False],
    'LoginDate': [2021, 2022, 2020]
})

# 1. 按Name分组,获取每个用户的最新登录日期
latest_login = df.groupby('Name')['LoginDate'].transform('max')

# 2. 生成布尔掩码:标记出登录日期早于最新日期的条目
need_modify = df['LoginDate'] != latest_login

# 3. 对符合条件的条目批量修改字段
df.loc[need_modify, 'Name'] = df.loc[need_modify, 'Name'] + '_duplicate'
df.loc[need_modify, 'isActive'] = True

print(df)

代码说明

  • transform('max')会为每个Name组的每一行返回组内最大的登录日期,方便和每行的LoginDate做对比
  • need_modify是布尔数组,精准定位需要修改的重复项(非最新登录的条目)
  • 用df.loc批量修改符合条件的行,比循环处理更高效简洁

运行后输出结果:

Name  isActive  LoginDate
0  John_duplicate      True       2021
1           John     False       2022
2           Fred     False       2020

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 05:35:29