Как заменить значения, встречающиеся более 1 раза?
Дан фрейм данных. Необходимо заменить все, встречающиеся более 1 раза значения в колонке name на 1, а остальные на 0.
d = {
'name': ['mike, rick, morty', 'tot, piter, carl',
'brick, nick', 'rick, reaven, bart, homer', 'rick, morty'],
'Date': ['11/05/2011', '9/02/2010', '1/01/2014', '12/20/2020',
'9/30/2009'],
'Address': ['AR', 'YU', 'RU', 'EU', 'BY']
}
df = pd.DataFrame(data = d)
Ответы (1 шт):
Автор решения: strawdog
→ Ссылка
можно сделать так:
mapper = {k:(1 if v>1 else 0)
for (k, v) in df["name"].str.split(", ")
.explode().value_counts().to_dict().items()}
df["name"] = df["name"].str.split(", ").explode().replace(mapper).groupby(level=0).apply(list)
df:
name Date Address
0 [0, 1, 1] 11/05/2011 AR
1 [0, 0, 0] 9/02/2010 YU
2 [0, 0] 1/01/2014 RU
3 [1, 0, 0, 0] 12/20/2020 EU
4 [1, 1] 9/30/2009 BY