Как добавить столбец с порядковым номером записи сгруппировав по заданному столбцу?
Есть таблица с полями: id_клиента, id_заказа, инфо_заказа, дата. Есть DataFrame, который пишет в CSV. Необходимо в DataFrame добавить столбец, в котором будут содержаться порядковые номера заказов каждого клиента.
Пример DataFrame:
frame=pd.read_sql
frame=pd.read_sql("select * from orders where orderinfo not like '%[T%]%' ",
connection);
df = pd.DataFrame(frame);
df.to_csv('D:/database/test1.csv', sep=';', index=0, line_terminator='\n',
quotechar='"');
Данные в таблице (это фрагмент, их порядка 600 тыс.):
orderid clientid
4250037527175 458697677354
4250037527223 458697654011
4250037527287 458697677354
4250037527332 458697654011
4250037527445 458697654011
4250037527578 458697645413
4250037527616 458697645413
4250037527976 458697677354
В результате должно выйти нечто подобное:
serial orderid clientid
1 4250037527175 458697677354
1 4250037527223 458697654011
2 4250037527287 458697677354
2 4250037527332 458697654011
3 4250037527445 458697654011
1 4250037527578 458697645413
2 4250037527616 458697645413
3 4250037527976 458697677354
Ответы (1 шт):
Автор решения: MaxU
→ Ссылка
Воспользуйтесь GroupBy.cumcount():
df['serial'] = df.groupby('clientid').cumcount() + 1
результат:
In [4]: df
Out[4]:
orderid clientid serial
0 4250037527175 458697677354 1
1 4250037527223 458697654011 1
2 4250037527287 458697677354 2
3 4250037527332 458697654011 2
4 4250037527445 458697654011 3
5 4250037527578 458697645413 1
6 4250037527616 458697645413 2
7 4250037527976 458697677354 3