Pandas: Индекс дублируется. Как сделать его уникальным - PullRequest
2 голосов
/ 19 июня 2020

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

df=pd.DataFrame({'id': [1, 2, 2, 4], 'animal': ['dog', 'cat', 'bear', 'mouse']})

# just rearranging the order a bit
df=df[['id', 'animal', 'name']]

  id animal Seq
  1   dog   14
  2   cat   17
  2   bear  19
  4   mouse 23

Как вы можете видеть выше, идентификатор не является уникальным, я хочу создать уникальный идентификатор. Один из вариантов, о котором я думал, - это сгруппировать по (ID), а затем создать новый столбец, в котором я могу создать счетчик. А затем, возможно, объедините счетчик и идентификатор для создания уникального идентификатора.

  id animal     Seq Counter NewID(counter+id)
      1   dog   14   1       11
      2   cat   17   1       21
      2   bear  19   2       22
      4   mouse 23   1       41

Я не уверен, как этого добиться

Ответы [ 2 ]

1 голос
/ 19 июня 2020

Используйте GroupBy.cumcount для счетчика и добавьте к исходному id, преобразованному в строки, как Series.add:

df['NewID'] = df['id'].astype(str).add(df.groupby('id').cumcount().add(1).astype(str))
print (df)
   id animal NewID
0   1    dog    11
1   2    cat    21
2   2   bear    22
3   4  mouse    41
0 голосов
/ 19 июня 2020

Попробуйте это:

import pandas as pd 
df=pd.DataFrame({'id': [1, 2, 2, 4], 'animal': ['dog', 'cat', 'bear', 'mouse']})
df = df.assign(id=(df['animal']).astype('category').cat.codes + 1)
df

Результат:

   id   animal
0   3   dog
1   2   cat
2   1   bear
3   4   mouse
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...