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

如何在Pandas DataFrame中获取各街区组sum最高的room_type

实现思路与代码示例

假设你用Pandas处理数据,下面两种方法都能帮你筛选出每个街区组中sum值最高的房型:

方法一:用transform获取组内最大值后筛选

如果你已经通过groupby得到了包含neighborhood_group、room_type和对应sum_value的聚合表(比如叫agg_df),可以这么做:

# 给每行添加对应街区组的sum最大值
agg_df['group_max_sum'] = agg_df.groupby('neighborhood_group')['sum_value'].transform('max')
# 只保留sum值等于组内最大值的行,最后删掉辅助列
final_result = agg_df[agg_df['sum_value'] == agg_df['group_max_sum']].drop('group_max_sum', axis=1)

transform的作用是把每个街区组的最大值广播到该组的所有行,这样就能直接和每行的sum_value对比筛选。如果同一个街区组有多个房型sum值并列第一,这个方法会把它们都保留下来。

方法二:用rank排名后筛选

这种方法通过给每个街区组内的sum值排名,直接取排名第一的行:

# 按街区组分组,给sum_value降序排名(rank=1就是最大的)
agg_df['sum_rank'] = agg_df.groupby('neighborhood_group')['sum_value'].rank(ascending=False, method='first')
# 筛选排名为1的行,删掉辅助列
final_result = agg_df[agg_df['sum_rank'] == 1].drop('sum_rank', axis=1)

这里的method='first'是指如果有相同的sum值,取最先出现的那一行;如果想保留所有并列第一的,把method改成'min'即可。

如果你的原始数据还没做聚合,得先执行这一步:

# 先按街区组和房型分组,计算sum值
agg_df = original_df.groupby(['neighborhood_group', 'room_type'])['目标列'].sum().reset_index(name='sum_value')

把上面的目标列替换成你要计算sum的列名就行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 19:18:12