Как создать колонку с наиболее часто встречающимися значениями другой колонки?

Необходимо создать колонку Temp для размещения в ней значения из колонки 'Net', наиболее часто встречающегося для каждого значения из колонки 'Address':

d = {'name': ['rick, mike, 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': ['BY', 'YU', 'RU', 'BY', 'BY'], 'Net': [1, 0, 1, 0, 1]}

df = pd.DataFrame(data = d)

Ответ должен выглядеть как:

Address Temp
BY 1
YU 0
RU 1
BY 1
BY 1

Ответы (3 шт):

Автор решения: CrazyElf

Наверное, можно короче, но вот рабочее решение через lambda и value_counts:

temp = df.groupby('Address')['Net'] \
    .agg(lambda x: x.value_counts().keys()[0]) \
    .rename('Temp')
df = df.join(temp, on='Address')
→ Ссылка
Автор решения: inquirer
df['Temp'] = [df['Net'][df[df['Address'] == df['Address'][i]].index].max()\
              for i in range (0, len(df['Address']))]
print(df)

У меня так получилось.

→ Ссылка
Автор решения: D.Vinogradov

Как вариант через transform и mode

df['temp'] = df.groupby('Address')['Net'].transform(lambda x: x.mode().iat[0])

>>> df

                 name           Date       Address Net temp
0          rick, mike, morty  11/05/2011      BY    1     1
1           tot, piter, carl   9/02/2010      YU    0     0
2                brick, nick   1/01/2014      RU    1     1
3  rick, reaven, bart, homer  12/20/2020      BY    0     1
4                rick, morty   9/30/2009      BY    1     1
→ Ссылка