我们如何才能只获取每个ID的最长日期并删除其余记录?

2024-04-25 19:46:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我要确保数据框中的日期是实际日期(它以对象的形式出现)

from datetime import datetime
df_ps['data_date'] = pd.to_datetime(df_ps['data_date'], errors='coerce')
print(df_ps['data_date'].dtype)

现在,我只想保留具有最长日期和重复ID的行。ID字段标题为“位置”

我运行以下代码,得到31299行。这是开始的行数

df_ps.sort_values(['location', 'data_date']).drop_duplicates('location', keep='last')
print(df_ps.shape)

我运行以下代码,得到18103行

df_ps_final = df_ps.loc[df_ps.groupby('location').data_date.idxmax()]
print(df_ps_final.shape)

我运行以下代码,得到17740行

df_ps_final = df_ps[df_ps.groupby('location')['data_date'].transform('max') == df_ps['data_date']]
print(df_ps_final.shape)

我在Excel中输入了位置和数据日期,单击“删除重复项”,最终得到11816条记录。也许Excel是在做一些我不知道的事情。无论如何,在Python中,什么是只保留每个ID的最大日期的最佳方法