gpt4 book ai didi

python - 使用 Pandas DataFrame 逐行查找过去 6 个月内发生的事件

转载 作者:行者123 更新时间:2023-11-28 20:55:54 32 4
gpt4 key购买 nike

假设我有这样一个数据集:

  id_police id_sinistre    datesurv
0 p123 s120 01/01/2018
1 p123 s121 03/01/2018
2 p123 s122 05/05/2018
3 p222 s123 04/05/2018
4 p222 s124 02/12/2018
5 p433 s125 07/08/2018
6 p433 s126 08/09/2018
7 p433 s127 10/10/2018

我的目标是在过去 6 个月中为每一行找到最后一次出现的 id_police,如下所示:

  id_police id_sinistre    datesurv  occ
0 p123 s120 01/01/2018 0
1 p123 s121 03/01/2018 1
2 p123 s122 05/05/2018 2
3 p222 s123 04/05/2018 0
4 p222 s124 02/12/2018 0
5 p433 s125 07/08/2018 0
6 p433 s126 08/09/2018 1
7 p433 s127 10/10/2018 2

我想我需要 .duplicated.groupby 但我不确定如何使用它们...在此先感谢您的帮助!

最佳答案

如果 6 个月应该简化为 6 * 30 天,请使用带有 diff 的自定义 lambda 函数,按值和最后的累积总和进行比较:

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

df = df.sort_values(['id_police','datesurv'])

f = lambda x: (x.diff().dt.days < 30 * 6).cumsum()
df['occ'] = df.groupby('id_police')['datesurv'].apply(f)

print (df)
id_police id_sinistre datesurv occ
0 p123 s120 2018-01-01 0
1 p123 s121 2018-01-03 1
2 p123 s122 2018-05-05 2
3 p222 s123 2018-05-04 0
4 p222 s124 2018-12-02 0
5 p433 s125 2018-08-07 0
6 p433 s126 2018-09-08 1
7 p433 s127 2018-10-10 2

关于python - 使用 Pandas DataFrame 逐行查找过去 6 个月内发生的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55688955/

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