【发布时间】:2021-04-26 18:23:59
【问题描述】:
假设以下数据框:
date | id
2020-12-11 | A
2020-12-15 | A
2020-04-09 | B
2020-04-09 | C
2020-04-08 | C
2021-03-11 | D
2021-03-12 | D
2021-01-24 | E
2021-01-19 | E
期望的输出:
date | id
2020-12-11 | A
2020-04-09 | B
2020-04-09 | C
2020-04-08 | C
2021-03-11 | D
2021-03-12 | D
2021-01-19 | E
基本上,如果 id 重复,我们要检查日期是否连续。如果连续,则保留两者,否则仅保留较小的日期。目前这就是我所拥有的,但我觉得必须有一种更有效的方法来做到这一点。
df['date'] = df['date'].apply(pd.to_datetime)
for i in range(1, len(df)):
if date['id'].iloc[i-1] == date['id'].iloc[i]:
if (abs(df['date'].iloc[i-1] - df['date'].iloc[i])) > datetime.timedelta(days=1): ## check if days are more than 1 day from each other
print (max(df['date'].iloc[i], df['date'].iloc[i-1])) ## drop this entry, keep the other
【问题讨论】:
标签: python pandas date datetime