Python:如何在DataFrame分组中选取最大值(支持并列多选)
如何按州和民调机构分组筛选得票率最高的党派(支持并列)
问题描述
需要按**州(State)和民调机构(Pollster)**分组,筛选出每组内得票率最高的党派(Party),支持并列情况(即多个党派得票率相同时全部保留)。
示例数据
import pandas as pd data = {'State': ['Texas','Texas','Texas','Texas', 'New York','New York', 'Pennsylvania','Pennsylvania','Pennsylvania', 'Pennsylvania','Pennsylvania','Pennsylvania'], 'Pollster': ['Chuck Norris','Chuck Norris','Mike Jones','Mike Jones', 'Sterling Cooper','Sterling Cooper', 'Yinz','Yinz','Yinz','Wawa','Wawa','Wawa'], 'Party': ['Thems','RIPs','Thems','RIPs', 'Thems','RIPs', 'Thems','RIPs','LIBOR', 'Thems','RIPs','LIBOR'], 'Percentage of Vote' : [0.45, 0.55, 0.43, 0.57, .99,.01, .5,.5,0, 1/3,1/3,1/3]} df = pd.DataFrame(data)
原始数据预览
State Pollster Party Percentage of Vote 0 Texas Chuck Norris Thems 0.450000 1 Texas Chuck Norris RIPs 0.550000 2 Texas Mike Jones Thems 0.430000 3 Texas Mike Jones RIPs 0.570000 4 New York Sterling Cooper Thems 0.990000 5 New York Sterling Cooper RIPs 0.010000 6 Pennsylvania Yinz Thems 0.500000 7 Pennsylvania Yinz RIPs 0.500000 8 Pennsylvania Yinz LIBOR 0.000000 9 Pennsylvania Wawa Thems 0.333333 10 Pennsylvania Wawa RIPs 0.333333 11 Pennsylvania Wawa LIBOR 0.333333
期望输出
State Pollster Party Percentage of Vote 1 Texas Chuck Norris RIPs 0.550000 3 Texas Mike Jones RIPs 0.570000 4 New York Sterling Cooper Thems 0.990000 6 Pennsylvania Yinz Thems 0.500000 7 Pennsylvania Yinz RIPs 0.500000 9 Pennsylvania Wawa Thems 0.333333 10 Pennsylvania Wawa RIPs 0.333333 11 Pennsylvania Wawa LIBOR 0.333333
解决方案
以下两种方法均可实现需求,自动处理并列场景:
方法一:用transform匹配组内最大值
# 按州和民调机构分组,计算每组的最高得票率 max_vote = df.groupby(['State', 'Pollster'])['Percentage of Vote'].transform('max') # 筛选出得票率等于组内最大值的行 result = df[df['Percentage of Vote'] == max_vote] print(result)
方法二:用groupby结合自定义筛选函数
def filter_max(group): return group[group['Percentage of Vote'] == group['Percentage of Vote'].max()] result = df.groupby(['State', 'Pollster']).apply(filter_max).reset_index(drop=True) print(result)
两种方法都会保留所有得票率等于组内最大值的行,完美适配并列情况。
内容的提问来源于stack exchange,提问作者user603535
相关产品推荐
相关产品推荐

