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

如何选取Pandas DataFrame中两列及以上联合值最大的行

Pandas 筛选多列联合值最大行的实现方案
  • 如果你需求的「联合值最大」是列优先级规则:即先比较排在前面的列,取值最大的行,若前面列值相同再比较下一列,完全匹配你给出的示例场景,直接用sort_values方法即可:
# 按Feat1优先、Feat3次之的规则降序排列,取第一行即为目标行
target_row = df.sort_values(by=["Feat1", "Feat3"], ascending=False).head(1)

如果需要返回所有并列最大的行,修改为:

sorted_df = df.sort_values(by=["Feat1", "Feat3"], ascending=False)
# 筛选所有和第一行排序列值完全相同的行
all_max_rows = sorted_df[sorted_df[["Feat1", "Feat3"]].eq(sorted_df[["Feat1", "Feat3"]].iloc[0]).all(axis=1)]
  • 如果需求的「联合值最大」是自定义计算规则:比如两列的和、加权和等,先计算联合得分列再筛选即可:
# 示例:计算Feat1和Feat3的加权和作为联合得分,权重分别为0.7和0.3
df["joint_score"] = df["Feat1"] * 0.7 + df["Feat3"] * 0.3
# 筛选所有联合得分最大的行
target_rows = df[df["joint_score"] == df["joint_score"].max()].drop(columns="joint_score")
  • 大数据量场景优化方案:如果你的DataFrame数据量很大,全表排序性能偏低,可以用逐层筛选的方法避免全表排序:
# 先筛选Feat1等于最大值的所有行
max_feat1_df = df[df["Feat1"] == df["Feat1"].max()]
# 再在上述结果中筛选Feat3等于最大值的行
target_row = max_feat1_df[max_feat1_df["Feat3"] == max_feat1_df["Feat3"].max()]

内容的提问来源于stack exchange,提问作者Victor Fornasiero de Paiva

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 18:15:04