Pandas заполнение данных в режиме - PullRequest
1 голос
/ 03 апреля 2020

У меня есть следующий фрейм данных:

df = pd.DataFrame({'id': [1,2,3,4,1,1,4,4,3, 1, 3], 'name':['name1', 'name2', 'name2', 'name1', 'name2', 'name1', 'name1', 'name3', 'name3', 'name2', 'name2']})
id   name
1  name1
2  name2
3  name2
4  name1
1  name2
1  name1
4  name1
4  name3
3  name3
1  name2
3  name2

И я хочу заполнить все имена режимом идентификатора строки (если есть несколько элементов, которые являются режимом, заполнить кем-либо), итоговый фрейм данных будет выглядеть так:

id   name
1  name1
2  name2
3  name2
4  name1
1  name1
1  name1
4  name1
4  name1
3  name2
1  name1
3  name2

Я подумал об идентификаторе groupby и получил режим, а затем слил фреймы данных, и я не могу найти функцию агрегации режимов.

1 Ответ

2 голосов
/ 03 апреля 2020

Вы можете сделать groupby().transform():

df['mode'] = df.groupby('id')['name'].transform(lambda x: x.mode()[0])

Вывод:

    id   name   mode
0    1  name1  name1
1    2  name2  name2
2    3  name2  name2
3    4  name1  name1
4    1  name2  name1
5    1  name1  name1
6    4  name1  name1
7    4  name3  name1
8    3  name3  name2
9    1  name2  name1
10   3  name2  name2
...