Это еще один вопрос из моего предыдущего вопроса , так как у меня возникла проблема с производительностью при использовании цикла через все идентификаторы:
Учитывая df:
id date quantity
1 2015-01-01 100
1 2016-01-01 500
1 2016-01-05 300
2 2017-01-01 100
2 2018-01-01 500
2 2018-01-05 100
Хотелось быполучить:
id date quantity days
1 2015-01-01 100 365
1 2016-01-01 500 4
1 2016-01-05 300 NaN
2 2017-01-01 100 365
2 2018-01-01 500 2
2 2018-01-03 100 NaN
, где столбец days - дни до следующей даты под тем же идентификатором.Если это последняя дата идентификатора, дни установлены на NaN
Я использовал цикл по всему идентификатору для
for id in ids:
dff = df[df['id'] == id]
dff['days'] = dff.date.diff().dropna().dt.days.values
, который очень медленный, потому что таблица имеет болеенесколько миллионов строк.