【发布时间】:2021-12-04 23:39:49
【问题描述】:
我有一个如下所示的数据框:
| id | seen | year | month | day | dayname |
|---|---|---|---|---|---|
| f907942e330ac3653f8a9bd655770872 | 2021-06-02 16:34:56 | 2021 | 6 | 1 | Monday |
| 042b60106231fa8a8e43dd750432d5bc | 2021-06-02 16:13:29 | 2021 | 6 | 1 | Monday |
ID 列具有重复值,因为它会在用户进入建筑物时创建一个条目,而在离开建筑物时创建第二个条目。
我要做的是删除每天所有重复的 id 值。例如,一个人可以在 2021 年 1 月 1 日星期一和 2021 年 1 月 3 日星期三再次访问该建筑物,假设创建了 4 个条目,星期一 2 个,星期三 2 个,我只想保留一个每个特定日期。
您可以想象,我已经尝试过 df_filtered = df.sort_values(["seen"]).drop_duplicates("id") 之类的方法,但它对我不起作用,因为它会删除数据框中的所有重复值。
如何在不影响其他日子的情况下,每天删除重复的 ID(及其各自的行)?
提前致谢。
【问题讨论】:
-
除了
seen之外的所有内容如何分组并保留第一条记录,即 - `df.groupby(["id", "year", "month", "day"]) 。第一的()?您可以在之后重置索引 -
刚试过。没用。还会从其他日期完全删除一些 ID。
-
您可以按多列删除重复项:
df.sort_values(["seen"]).drop_duplicates(["id", "year", "month", "day"])
标签: python pandas dataframe duplicates