Вставка строк дорого. Вы можете использовать groupby
+ last
, объединить два кадра данных, а затем sort_values
:
df_last = df.groupby('Car_ID', as_index=False).last().assign(Info='Changed')
res = pd.concat([df, df_last], ignore_index=True)\
.sort_values('Car_ID')\
.reset_index(drop=True)
print(res)
Car_ID Date Driver Info
0 B332 2018-03-15 Alex Group_B
1 B332 2018-03-14 Alex Group_B
2 B332 2018-03-12 Alex Group_B
3 B332 2018-03-12 Alex Changed
4 C315 2018-03-15 Sara Group_C
5 C315 2018-03-14 Sara Group_C
6 C315 2018-03-13 Sara Group_C
7 C315 2018-03-12 Sara Group_C
8 C315 2018-03-11 Sara Group_C
9 C315 2018-03-11 Sara Changed
10 F310 2018-03-10 Franck Group_F
11 F310 2018-03-09 Franck Group_F
12 F310 2018-03-09 Franck Changed
Если я правильно понимаю ваш вопрос, вы предлагаете следующее решение для выполнения веб-аналитики для вашего приложения:
WebServer -> Firehose -> AWS-S3 -> AWS-Lambda - -> AWS-RDS
Я вижу ниже плюсы и минусы с вышеупомянутым дизайном
Плюсы:
Минусы:
Предложение для хранения данные в S3 через Firehose звучат как хорошее решение. Но имейте в виду, что минимальный интервал для Firehose составляет одну минуту, поэтому ваше приложение должно выдерживать эту небольшую задержку. Вы можете использовать Kinesis Streams с задержкой в миллисекунды, но тогда вам нужно управлять собственным кодом приложения и экземплярами для обработки потоков.
После загрузки данных в Kinesis Firehose или Streams вы также можете изучить следующие варианты:
Добавление нескольких ссылок из AWS, с которыми вы можете ознакомиться, прежде чем принять решение о решении:
Веб-аналитика в реальном времени с решением Kinesis Data Analytics
[1125 ] Конвейер аналитики схемы при чтении с использованием Amazon Athena
Amazon Redshift Spectrum расширяет хранилище данных до экзабайт - загрузка не требуется