Как я могу найти уникальную запись в python по количеству строк? - PullRequest
1 голос
/ 10 февраля 2020

df:

  Country  state      item 
0 Germany  Augsburg   Car
1 Spain    Madrid     Bike
2 Italy    Milan      Steel
3 Paris    Lyon       Bike
4 Italy    Milan      Steel
5 Germany  Augsburg   Car

В приведенном выше кадре данных, если мы берем уникальную запись Внешний вид.

  Country  state      item  Appeared
0 Germany  Augsburg   Car     1
1 Spain    Madrid     Bike    1
2 Italy    Milan      Steel   1
3 Paris    Lyon       Bike    1
4 Italy    Milan      Steel   2
5 Germany  Augsburg   Car     2

Поскольку строка №. 4 и 5 появились во второй раз, я хочу изменить их имя элемента, чтобы различать обе записи. Если запись появляется в данных более одного раза, имя элемента следует переименовать в Item_A для первого появления и Item_B для второго появления. .. Вывод:

Country  state      item  Appeared
0 Germany  Augsburg   Car_A   1
1 Spain    Madrid     Bike    1
2 Italy    Milan      Steel_A 1
3 Paris    Lyon       Bike    1
4 Italy    Milan      Stee_B  2
5 Germany  Augsburg   Car_B   2

1 Ответ

2 голосов
/ 10 февраля 2020

Вы можете сначала получить столбец Appreared с помощью groupby().cumcount, а затем добавить суффиксы:

# unique values
duplicates = df.duplicated(keep=False)

# Appearance count
df['Appeared'] = df.groupby([*df]).cumcount().add(1)

# add the suffixes
suffixes = np.array(list('ABC'))
df.loc[duplicates, 'item'] = df['item'] + '_' + suffixes[df.Appeared-1]

Вывод:

   Country     state     item  Appeared
0  Germany  Augsburg    Car_A         1
1    Spain    Madrid     Bike         1
2    Italy     Milan  Steel_A         1
3    Paris      Lyon     Bike         1
4    Italy     Milan  Steel_B         2
5  Germany  Augsburg    Car_B         2
...