我有以下数据框:
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的模式填充所有名称(如果有多个是mode的元素,则用任何人填充),最终的数据帧应如下所示:
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 id并获取模式,然后合并数据帧,因为我似乎找不到模式聚合功能。
答案 0 :(得分:2)
您可以执行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