В следующем фрейме данных
d = {'year': [2001, 2002, 2005, 2002, 2004, 1999, 1890],
'tin': [12, 23, 24, 28,30, 12,7],
'ptin': [12, 23, 28, 22, 12, 12,0] }
df = pd.DataFrame(data=d)
Если я запускаю следующий код:
df = (df.groupby(['ptin', 'tin', 'year'])
.apply(lambda x : x['tin'].isin(x['ptin']).astype(int).sum())
.reset_index(name='matches'))
df
Я получаю следующий результат
ptin tin year matches
0 12 3.0 1999 0
1 12 3.0 2001 0
2 22 1.0 2002 0
3 23 1.0 2002 0
Это дает мне подходящее оловоПтин и групп по годам.
Теперь, если я хочу найти последнее вхождение, скажем, например, tin == 12, я должен получить 2001. Я хочу добавить этот столбец, а также разницу между 1999 и 2001, то есть два в другом столбце,так, что мой ответ выглядит следующим образом
ptin tin year matches lastoccurence length
0 12 3.0 1999 0 0 0
1 12 3.0 2001 0 2001 2
2 22 1.0 2002 0 2002 1
3 23 1.0 2002 0 2002 1
Любая помощь будет оценена.Я мог бы принять решение в пандах или SQL, если это возможно.