首页 > 解决方案 > 熊猫数据框填充模式

问题描述

我有以下数据框:

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 的模式填充所有名称(如果有多个元素是模式,则填充任何人),最终的数据框将如下所示:

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 并获取模式,然后通过我似乎找不到模式聚合函数来合并数据帧。

标签: pythonpandasdataframepandas-groupby

解决方案


你可以这样做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

推荐阅读