Как заменить значения дубликатов на уникальные значения?
Подскажите пожалуйста, возможно ли без циклов в pandas заменить дублирующийся значения на уникальные? К примеру, если в столбце есть значения 100, 100, 200, 200, 200, то на выходе должно получиться, например, 100-1, 100-2, 200-1, 200-2, 200-3.
На входе есть таблица фрейм данных:
dataframe = pd.DataFrame({'article': ['art.01', 'art.02', 'art.03', 'art.04', 'art.05', 'art.06'], 'price': [100, 200, 300, 100, 150, 100], 'posting_number': ['1000-100-1', '2000-100-1', '1000-100-1', '1000-100-1', '2000-100-1', '3000-100-1']})
Необходимо, чтобы для каждого дублирующего значения столбца posting_number был добавлен, например их индекс, или порядок дубликата, что бы в конечном счете все значения в posting_number были уникальными. Я попытался это сделать примерно так, но ничего не вышло.
dataframe[dataframe.duplicated(["posting_number"])] \
.loc["posting_number"] = dataframe["posting_number"] + "-" + str(dataframe.index)
Как возможно решить данную задачу?
Ответы (1 шт):
Автор решения: strawdog
→ Ссылка
Воспользуйтесь группировкой с подсчетом и конкатенацией столбцов:
df["posting_number"] = df["posting_number"]+ "-" + df.groupby("posting_number").cumcount().astype(str)
article price posting_number
0 art.01 100 1000-100-1-0
1 art.02 200 2000-100-1-0
2 art.03 300 1000-100-1-1
3 art.04 100 1000-100-1-2
4 art.05 150 2000-100-1-1
5 art.06 100 3000-100-1-0