Добавить числа с повторяющимися значениями для столбцов в пандах - PullRequest
0 голосов
/ 09 января 2019

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

df:
col1     col2
 1        pqr
 3        abc
 2        pqr
 4        xyz
 1        pqr

Я обнаружил, что есть повторяющееся значение и его pqr. Я хочу добавить 1,2,3, где происходит pqr. Последний кадр данных, который я хочу получить:

df1
col1      col2
 1        pqr1
 3        abc
 2        pqr2
 4        xyz
 1        pqr3

Как это сделать эффективно

1 Ответ

0 голосов
/ 09 января 2019

Используйте duplicated с keep=False для всех строк дублирования и добавьте счетчик, созданный cumcount:

mask = df['col2'].duplicated(keep=False)
df.loc[mask, 'col2'] += df.groupby('col2').cumcount().add(1).astype(str)

Или:

df['col2'] = np.where(df['col2'].duplicated(keep=False), 
                      df['col2'] + df.groupby('col2').cumcount().add(1).astype(str),
                      df['col2'])
print (df)
   col1  col2
0     1  pqr1
1     3   abc
2     2  pqr2
3     4   xyz
4     1  pqr3

Если нужно, то же самое только для pqr значений:

mask = df['col2'] == 'pqr'
df.loc[mask, 'col2'] += pd.Series(np.arange(1, mask.sum() + 1),
                                  index=df.index[mask]).astype(str)
print (df)
   col1  col2
0     1  pqr1
1     3   abc
2     2  pqr2
3     4   xyz
4     1  pqr3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...