Группировка датафрейма по части строки и подсчет номеров элементов внутри группы

По первым двум цифрам числа нужно сгруппировать колонку и посчитать номера элементов внутри группы

Датафрейм:

01256
01369
01458
01358
24785
24789
24365
24157
27894
27444

Нужно получить ->

01256 1
01369 2
01458 3
01358 4
24785 1
24789 2
24365 3
24157 4
27894 1 
27444 2

как сделать?


Ответы (1 шт):

Автор решения: CrazyElf

Ну буквально так и делаете:

  • выделяете первые две цифры
  • делаете по ним группировку
  • используете cumcount для подсчёта номера внутри группы
import pandas as pd

df = pd.DataFrame(
"""01256
01369
01458
01358
24785
24789
24365
24157
27894
27444""".split('\n'), 
columns=['num']
)
df['ord'] = df.groupby(df['num'].str.slice(0,2)).cumcount() + 1
df

На выходе:

     num   ord
0   01256   1
1   01369   2
2   01458   3
3   01358   4
4   24785   1
5   24789   2
6   24365   3
7   24157   4
8   27894   1
9   27444   2
→ Ссылка