Добавьте индекс в pandas на основе каждого вхождения другого столбца, указав c значение - PullRequest
1 голос
/ 17 января 2020

У меня есть такой фрейм данных:

category name   age 
parent  harry   29
child   smith   12
parent  sally   41
child   david   19
child   mike    16

И я хочу добавить столбец в семейства групп на основе каждого вхождения значения столбца категории 'parent' (фрейм данных находится в порядке). Как в:

category name   age  family_id
parent  harry   29     0
child   smith   12     0
parent  sally   41     1
child   david   19     1
child   mike    16     1

Я пытаюсь сделать family_id возрастающим целым числом.

Я пробовал группу group_by и сейчас пытаюсь написать свою собственную функцию применения, но ее очень медленно и не работает, как ожидалось. Мне не удалось найти пример, который группирует строки на основе значения столбца по каждому вхождению одинакового значения .

1 Ответ

1 голос
/ 17 января 2020

Вы можете использовать eq для сопоставления, если столбец category равен parent и cumsum, sub - для вычитания 1 поскольку cumsum начинается с 1 здесь:

df['family_id'] = df['category'].eq('parent').cumsum().sub(1)
print(df)

  category   name  age  family_id
0   parent  harry   29          0
1    child  smith   12          0
2   parent  sally   41          1
3    child  david   19          1
4    child   mike   16          1
...