删除特定 ID 组内 7 天内的相互观察结果

问题描述 投票:0回答:1

我有一个带有 ID 和日期的 pandas 数据框,如下所示:

身份证 日期
111 2021年9月16日
111 2022年3月14日
111 2022年3月18日
111 21/03/2022
111 2022年3月22日
222 27/03/2022
222 2022年3月30日
222 2022 年 4 月 4 日
222 2022 年 6 月 4 日
222 2022年4月13日

对于每个 ID,我想过滤表格并删除彼此相隔 7 天内的观察结果。但我想保留彼此相差 7 天之内的日期中的最早日期,以便每个 ID 都具有相距超过 7 天的唯一日期,并且不包含其间的其他日期:

身份证 日期
111 2021年9月16日
111 2022年3月14日
111 2022年3月22日
222 27/03/2022
222 2022 年 4 月 4 日
222 2022年4月13日

我对 python 和 pandas dataframe 很陌生,所以希望有人可以提供帮助并提供一些指导。还有一个类似的问题如何删除特定 ID 组内 7 天内的观察结果? 但这是在 R 中完成的,因此希望 Pandas 可以完成类似的操作。

python pandas group-by
1个回答
0
投票

IIUC用途:

df['Date'] = pd.to_datetime(df['Date'], dayfirst=True)

out = df[~df.groupby('ID')['Date'].diff().dt.days.ge(7)]
print (out)
    ID       Date
0  111 2021-09-16
2  111 2022-03-18
3  111 2022-03-21
4  111 2022-03-22
5  222 2022-03-27
6  222 2022-03-30
7  222 2022-04-04
8  222 2022-04-06
© www.soinside.com 2019 - 2024. All rights reserved.