我正在寻找的是一种删除重复项并获取最新记录的方法。我知道drop_duplicates()但只删除了100%相同的行。所以期望的输出看起来像:
我尝试过这样的事情:
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名称分组,仍然记录最新记录的整个记录。
谢谢!
答案 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()