重复大熊猫数据框并获取最新记录

时间:2017-06-28 03:09:10

标签: python pandas duplicates pandas-groupby

我有一个包含重复和更新日期的数据框。开始日期: Sample Data

我正在寻找的是一种删除重复项并获取最新记录的方法。我知道drop_duplicates()但只删除了100%相同的行。所以期望的输出看起来像: enter image description here

我尝试过这样的事情:

grouped = df.groupby(['First Name', 'Middle Name','Last Name','Job Title','Active','Contractor'])
new_data = grouped['Update Date'].agg(np.max).to_frame().reset_index()

但必须有一种更好的方法来做到这一点,而不是按每列进行分组,然后采用更新日期的最大值。 如果我想按某些列进行分组并采用最大更新日期该怎么办?但也要采取其他没有分组的列。

例如按First,middle和Last名称分组,仍然记录最新记录的整个记录​​。

输入:enter image description here

期望的输出。 enter image description here

谢谢!

2 个答案:

答案 0 :(得分:3)

drop_duplicates采用subset参数:

ident_fields = ['First Name', 'Middle Name','Last Name']
df = (df.sort_values('Update Date')
      .drop_duplicates(subset=ident_fields, keep='last'))

答案 1 :(得分:1)

尽管我的评论,您可以先订购整个数据框,然后再取每组的第一行。

df = df.sort_values('Update Date', ascending=False)
df.groupby(['First Name', 'Middle Name','Last Name']).first().reset_index()