Набор данных:
ID
Дата
Цена
1
01.02.2024
1,00
1
04.02.2024
1,00< /td>
1
05 февраля 2024 г.
1,20
1
06 февраля 2024 г.< /td>
1,30
1
2024-02-07
1,30
2
2024-02-01
1,30
2
04 февраля 2024 г.
0,90
2
05.02.2024
0,90
< /tr>
2
06.02.2024
0,90
2
07.02.2024
< td>1,30
Мой вывод должен выглядеть примерно так это:
Идентификатор
начальная_дата
конечная_дата
цена
repeated_days_count
1
2024-02-01
2024-02-04
1,00
2
1
06 февраля 2024 г.2024-02-07
1,30
2
2
04 февраля 2024 г.
06 февраля 2024 г.
0,90
3
Как видите, мне нужно избежать следующих проблем:
- 01 февраля 2024 г. до 2024 г. 02-04: Как указано выше, это считается как последовательные дни, т.е. игнорируем выходные 2024-02-02 и 2024-02-03)
- Если та же цена появляется в другой раз в серия, ее не следует считать. Только если это происходит в дни подряд.
- Если одна и та же цена (здесь 1,30) появляется в списке сразу друг за другом, но не для одного и того же идентификатора, она не должна учитываться. как последовательный --> сдвиг().cumsum() здесь не будет работать.
До сих пор я пробовал несколько вариантов первого сдвиг().cumsum()а затем groupby().agg({"date": ["min", "max"], "price": "size"
Но ни один из них не решит вышеупомянутые проблемы вместе.
Подробнее здесь: https://stackoverflow.com/questions/783 ... ime-series