Как заменить значения, встречающиеся более 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
→ Ссылка