我有一个带有 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 可以完成类似的操作。
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