В моих данных есть дубликаты, которые мне нужно исправить.
Это образец кадра данных:
test = pd.DataFrame({'event_id':['1','1','2','3','5','6','9','3','9','10'],
'user_id':[0,0,0,1,1,3,3,4,4,4],
'index':[10,20,30,40,50,60,70,80,90,100]})
Мне нужно выбрать все строки, которые имеют одинаковые значения в event_id
, но разные значения в user_id
. Я попытался это (на основе аналогичного вопроса, но без принятого ответа):
test.groupby('event_id').filter(lambda g: len(g) > 1).drop_duplicates(subset=['event_id', 'user_id'], keep="first")
out:
event_id user_id index
0 1 0 10
3 3 1 40
6 9 3 70
7 3 4 80
8 9 4 90
Но мне не нужна первая строка, где user_id совпадает - 0
.
Вторая часть вопроса - каков наилучший способ исправить дубликат записи? Как я могу добавить суффикс к event_id
(_new
), но только в этой строке:
event_id user_id index
3 3_new 1 40
6 9_new 3 70
7 3 4 80
8 9 4 90