gpt4 book ai didi

python - 使用 python 根据日期条件删除行

转载 作者:行者123 更新时间:2023-12-02 04:40:12 24 4
gpt4 key购买 nike

我有一个数据框,其中包含日期和 ID 列。下面是一个示例框架,仅用于此问题的目的。但真实数据包含更多的行和列。

from datetime import date, timedelta
import pandas as pd

date = datetime.datetime(2020, 1, 1)
delta_1 = 5
delta_2 = 15
delta_3 = 18

data = {
'A': [date, date - timedelta(delta_1), date - timedelta(delta_2), date, date - timedelta(delta_3)],
'B': ['a', 'a', 'a', 'b', 'b']
}
df = pd.DataFrame(data)
print(df)

A B
0 2020-01-01 a
1 2019-12-27 a
2 2019-12-17 a
3 2020-01-01 b
4 2019-12-14 b

我想要实现的是,对于每个唯一的 id(示例中的列 B),从最近的行开始,并根据日期条件删除行:如果一行现有 id 是在距具有该 id 的最新行起 10 天内插入的,只有最新行才有效。因此,在本例中,以 10 天为限制,我最终会得到以下结果:

           A  B
0 2020-01-01 a
2 2019-12-17 a
3 2020-01-01 b
4 2019-12-14 b

任何想法将不胜感激!

最佳答案

这是一种方法,使用 diffcumsum ,得到当天的差异总和,然后我们得到除数 //

s=df.groupby('B').A.apply(lambda x : x.diff().dt.days.cumsum().fillna(0).abs()//10)
df=df.groupby([df.B,s]).head(1)
A B
0 2020-01-01 a
2 2019-12-17 a
3 2020-01-01 b
4 2019-12-14 b

关于python - 使用 python 根据日期条件删除行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59861402/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com