比较 ID,逐日键入 Pandas

Comparing ID, Type day by day Pandas

我有以下 df:

index, date, ID, type   
0, 2022-04-04, 1, A  
1, 2022-04-04, 2, B 
2, 2022-04-03, 1, A
3, 2022-04-03, 2, A 

我想要以下 df(添加一个新列('change'),如果实际日期与之前日期的 ID 类型发生变化,则该列为 True/False):

index, date, ID, type, change   
0, 2022-04-04, 1, A, False (False because type didnt change from one day to the other: A-->A)
1, 2022-04-04, 2, B, True  (True because type change from one day to the other: A-->B)
2, 2022-04-03, 1, A, ---   (no information of the day before)
3, 2022-04-03, 2, A, ---   (no information of the day before)

我需要一个代码来生成每个日期 True/False 的新列“更改”。


编辑: 这是我的真实 df(每个日期 150.000 个 ID,3 种类型 - 已启用、不合格、合格(未启用)和每个日期的 ID 数量不同(某些 ID 为 activated/desactivated):

index, date, ID, type
2022-03-14,262199,Enabled
2022-03-14,267695,Enabled
2022-03-14,262708,Not eligible
2022-03-14,233,Enabled
2022-03-14,263652,Not eligible
2022-03-14,267908,Not eligible
2022-03-14,263992,Enabled
2022-03-14,267973,Not eligible
2022-03-14,1996,Enabled
2022-03-14,268216,Eligible (not enabled)
....

同样的代码想法也以一种简单的方式出现,但有 3 种类型的 ID,而不是每个日期的固定数量的 ID。

IIUC 使用:

df['change'] = df['type'].ne(df.groupby('ID')['type'].shift(-1).fillna(df['type']))
print (df)
         date  ID type  change
0  2022-04-04   1    A   False
1  2022-04-04   2    B    True
2  2022-04-03   1    A   False
3  2022-04-03   2    A   False