对于具有较远/较远日期熊猫的副本,将布尔值更改为True



给定数据框,我想将isActive列值设置为True仅重复的值,并将'_duplicate'添加到Name列。

df = 
Name    isActive    LoginDate
John    False       2021      
John    False       2022 
Fred    False       2020 

期望输出:

df =

Name              isActive    LoginDate
John_duplicate    True        2021      
John              False       2022 
Fred              False       2020 

现在我能够为每个副本添加数字,但我想跳过最近的登录日期,并向最古老的添加文本。并更改布尔值:

df.LoginDate = ad.groupby('LoginDate').LoginDate.apply(lambda n: n + (np.arange(len(n))+1).astype(str))

任何建议吗?

使用Series.duplicated作为Name的第一个值,并将duplicatedkeep=False链接为Name,并将isActive列与附加子字符串添加到Name:

m = ~df['Name'].duplicated() & df['Name'].duplicated(keep=False)
df['isActive'] = m
df.loc[m, 'Name'] +=  '_duplicate'
print (df)
Name  isActive  LoginDate
0  John_duplicate      True       2021
1            John     False       2022
2            Fred     False       2020

最新更新