我有一个Pandas数据框,df:
Team Name Role Country
Mobile Developer USA
Mobile Developer USA
Mobile Developer USA
Mobile Developer USA
Mobile Product Owner USA
Mobile Product Owner USA
Mobile Product Owner UK
Mobile Scrum Master India
Mobile Scrum Master India
Mobile Developer UK
Mobile Developer UK
Mobile Developer UKtype here
Web Developer UK
Web Developer UK
Web Developer UK
Web Developer UK
Web Product Owner India
Web Product Owner India
Web Product Owner UK
Web Scrum Master USA
Web Scrum Master USA
Web Developer USA
Web Developer USA
Web Developer USA
我想使用Pandas或任何合适的替代品转换它。对于给定的团队(移动的/Web),我想通过团队成员“角色”导出“最常出现的国家”值。结果数据框架可以是任何形状-选项1或选项2。
我知道会有这样的情况,当有一个平局在'最发生的国家,我会把它作为一个边缘情况下,现在,我会选择任何随机第一值(50%美国,50英国)的情况下平局。
结果数据框选项1
Team Name Developer Product Owner Scrum Master
Mobile USA USA India
Web UK India USA
结果数据框选项2
Team Name Role Country (Most occuring value)
Mobile Developer USA
Mobile Product Owner USA
Mobile Scrum Master India
Web Developer UK
Web Product Owner India
Web Scrum Master USA
我试过对 Dataframe 进行分组,但是没有给予理想的结果。
1条答案
按热度按时间sr4lhrrt1#
获取出现次数最多的值的简单方法是在groupby或透视表中使用pd.Series.模式:
如果有多个最频繁出现的国家/地区,要选择随机国家/地区,可以对groupby应用函数:
测试速度,使用
pivot_table
比groupby
慢,在函数中使用条件if
语句比随机抽取最频繁出现的国家(即使只有1个国家)要快(如您在上面提供的数据)。要返回输出选项2,请不要在groupby代码末尾使用
.unstack()
(或将.stack()
添加到pivot_table,这将降低比较性能)。