python - 使用 pandas 在数据框中仅保留一条具有给定 ID 的记录

标签 python pandas

我使用 pandas 将两个 CSV 文件合并为一个文件,该文件由名为 ProjectID 的列索引。完成此操作后,仍然存在许多重复记录。我只想保留其中最新的(它们按日期顺序从最近到最近)。到目前为止我的代码是:

merged_df = pandas.merge(df1, df2, on="ProjectID", how="left")

我遇到的问题是如何仅保留项目有多个版本的最后一行。 pandas 中是否有内置的东西可以帮助解决这个问题?

编辑以添加示例数据

当前数据

ProjectID    Value    Date
1            54       9/21/2010
2            32       10/22/2010
2            32       10/28/2010
3            76       9/21/2010
4            37       9/21/2010
4            37       11/12/2010
4            38       11/14/2010

想要的数据

ProjectID    Value    Date
1            54       9/21/2010
2            32       10/28/2010
3            76       9/21/2010
4            38       11/14/2010

最佳答案

drop_duplicates 是 pandas 用于从数据框中删除重复项的函数。默认情况下,它会保留第一个观察到的重复值,但您可以使用 take_last= 参数来保留最后一个。

尝试:merged_df2 = merged_df.drop_duplicates('ProjectID', take_last=True)

关于python - 使用 pandas 在数据框中仅保留一条具有给定 ID 的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16243462/

相关文章:

python - 在 fabric 脚本的 psql 命令中转义引号

python - 为什么 scipy.optimize.curve_fit 不适合数据?

python - Python中的点是什么?

python - 从 python 日期时间中提取星期并获取序列号?

python - 查找列表中至少相距 x 的最小 n 个值

python - 我需要根据两列数据帧生成新列,如何才能更快?

python - 为什么 PyCharm 有时不使用系统环境变量作为虚拟环境的 PATH?

python - 如何更改 pandas df 中特定行的时间戳

python - 使用 Python 和 Pandas 实现一个经典的鞅

python - 使用 matplotlib 将 y 范围更改为从 0 开始