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

基于City与ID列筛选对应最大值行的DataFrame处理问题

解决DataFrame按City+ID分组保留Value最大值行的问题

需求说明

给定包含City、ID、Value三列的DataFrame,需对City和ID值完全相同的记录组,仅保留Value列数值最大的行,删除同组内Value较小的行。

示例输入

CityIDValue
London112.45
Amsterdam114.56
Paris116.89
New York123.86
Chicago114.56
Chicago120.76

解决方案

使用Pandas的groupby结合idxmax()可高效实现需求,代码如下:

import pandas as pd

# 构造示例数据(替换为你的实际DataFrame即可)
df = pd.DataFrame({
    'City': ['London', 'Amsterdam', 'Paris', 'New York', 'Chicago', 'Chicago'],
    'ID': [1, 1, 1, 1, 1, 1],
    'Value': [12.45, 14.56, 16.89, 23.86, 14.56, 20.76]
})

# 按City和ID分组,获取每组Value最大值对应的行索引
max_row_indices = df.groupby(['City', 'ID'])['Value'].idxmax()

# 筛选出目标行
filtered_df = df.loc[max_row_indices].reset_index(drop=True)

print(filtered_df)

扩展说明

如果同一City+ID组内存在多个行的Value等于最大值(即最大值不唯一),上述方法会仅保留第一个出现的最大值行。若需要保留所有最大值行,可使用transform方法:

# 保留同组内所有Value等于最大值的行
filtered_df = df[df['Value'] == df.groupby(['City', 'ID'])['Value'].transform('max')]

预期输出

CityIDValue
London112.45
Amsterdam114.56
Paris116.89
New York123.86
Chicago120.76

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 01:57:42