You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas按age分组取net_worth最大值并保留对应name列的方法

解决按年龄分组提取对应最高净资产富豪的问题

下面提供几种可行的方法,帮你在按age分组后,同时保留每组最高net_worth对应的name:

方法一:使用idxmax() + loc提取目标行

通过idxmax()找到每个年龄组中净资产最高的行索引,再用loc提取对应数据,直接保留所需列:

# 获取每个年龄组净资产最高的行的索引
max_worth_indices = df.groupby('age')['net_worth'].idxmax()
# 根据索引提取包含age、name、net_worth的目标数据
result_df = df.loc[max_worth_indices, ['age', 'name', 'net_worth']]
# 可选:重置索引让结果更整洁
result_df = result_df.reset_index(drop=True)

方法二:用transform()标记并筛选

先给原数据添加一列,标记当前年龄组的净资产最大值,再筛选出符合条件的行:

# 为每行标记所属年龄组的净资产最大值
df['group_max_net_worth'] = df.groupby('age')['net_worth'].transform('max')
# 筛选出净资产等于组内最大值的行,保留需要的列
result_df = df[df['net_worth'] == df['group_max_net_worth']][['age', 'name', 'net_worth']]
# 可选:重置索引
result_df = result_df.reset_index(drop=True)

方法三:通过groupby().apply()自定义处理

对每个年龄组应用自定义函数,直接返回组内净资产最高的行:

def extract_max_worth_row(group):
    # 返回组内净资产最大的行
    return group[group['net_worth'] == group['net_worth'].max()]

# 应用函数并整理结果
result_df = df.groupby('age').apply(extract_max_worth_row).reset_index(drop=True)

注意事项

如果同一个年龄组存在多位富豪净资产相同且均为组内最大值,上述方法会保留所有符合条件的行。若仅需每组一行,可在方法一的结果上使用drop_duplicates(subset='age')去重。

内容的提问来源于stack exchange,提问作者RomTurino

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 10:42:04