<表类="s-表">
<头>
电子邮件 |
<日>日期日>
名称 |
完成 |
<正文>
aaa@xyz.com |
01-07-2022 12:40:00 |
詹姆斯 |
否 |
aaa@xyz.com |
01-07-2022 12:10:00 |
詹姆斯 |
是 |
aaa@xyz.com |
01-07-2022 12:19:00 |
詹姆斯 |
是 |
aaa@xyz.com |
01-07-2022 12:30:00 |
詹姆斯 |
否 |
bbb@xyz.com |
02-07-2022 08:04:00 |
克拉克 |
是 |
bbb@xyz.com |
02-07-2022 08:08:00 |
克拉克 |
是 |
bbb@xyz.com |
02-07-2022 08:13:00 |
克拉克 |
否 |
bbb@xyz.com |
02-07-2022 08:28:00 |
克拉克 |
否 |
表>
在上面的数据框中,我想删除与 name/email-id 关联的多行并保留最早的时间。
输出
<表类="s-表">
<头>
电子邮件 |
<日>日期日>
名称 |
完成 |
<正文>
aaa@xyz.com |
01-07-2022 12:10:00 |
詹姆斯 |
是 |
aaa@xyz.com |
01-07-2022 08:04:00 |
克拉克 |
是 |
表>
这是我试过的;
df = df.sort_values('date')
df = df.groupby('date').first()
这最终创建了日期作为索引。我不想将我正在排序的列创建为索引,我想就地排序。基本上,我想获得每个姓名和电子邮件的最早“日期”。 'name' 和 'email' 列都有重复的值,唯一的区别因素是 'date' 列中的值。在特定人员的“日期”列中的所有值中,我只想保留完成时的最早日期 ="is"并删除所有其他行。
df.sort_values('date').groupby(['email', 'name']).first().reset_index()
给予
<表类="s-表">
<头>
索引 |
电子邮件 |
名字 |
<日>日期日>
完成 |
<正文>
0 |
aaa@xyz.com |
詹姆斯 |
01-07-2022 12:10:00 |
是 |
1 |
bbb@xyz.com |
克拉克 |
02-07-2022 08:04:00 |
是 |
表>