python - 根据多列中的值从数据框中删除重复行

标签 python pandas sorting in-place

<表类="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 是

关于python - 根据多列中的值从数据框中删除重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73451292/

相关文章:

python - 如何从 python (2.5) 中的 subprocess.Popen 获取 'real-time' 信息

python - Python-套接字将SO_BROADCAST设置为一次发送

python - 如何获得 [-2.3,-2.2,...] 的列表?

python - 直到行 Pandas 的最小值

xslt - 使用 XSLT 1.0 标记和排序

python - Flask - SQLAlchemy - 清除表以及多对多链接表

python - 将第一个文件加载到两个文件夹中并将它们加入 pandas

python - Pandas - 跨越几个 X 分钟时隙的任务计数

java - JSP 显示标签排序页面重新加载

javascript - 下划线 sortby 指定几个项目