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

如何在DataFrame中查找单列/多列最大值及对应行指定列的值?

解决mtcars数据集的两个DataFrame查询问题

嘿,我来帮你搞定这两个关于DataFrame数据查询的需求,用经典的mtcars数据集(这里用Python的pandas实现,逻辑通用),一步步拆解给你:

1. 单列最大值对应另一列的值

要实现“找某一列的最大值,再取该行另一指定列的值”,核心是先定位最大值所在的行,再提取目标列。这里以查找hp列最大值对应的mpg值为例:

方法1:用idxmax()快速定位索引(推荐,效率更高)

idxmax()会直接返回该列最大值所在行的索引,尤其适合大型数据集,避免不必要的整行筛选:

import pandas as pd

# 加载mtcars数据集(用公开可靠的数据源)
mtcars = pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/master/mtcars.csv')

# 1. 获取hp列最大值的行索引
max_hp_index = mtcars['hp'].idxmax()
# 2. 根据索引提取对应的mpg值
mpg_at_max_hp = mtcars.loc[max_hp_index, 'mpg']

print(f"hp列最大值对应的mpg值为:{mpg_at_max_hp}")

方法2:通过条件筛选整行

如果想直观查看最大值所在的完整行数据,可以用条件筛选:

# 1. 筛选出hp等于最大值的行
max_hp_row = mtcars[mtcars['hp'] == mtcars['hp'].max()]
# 2. 提取mpg值(用.values[0]避免返回Series格式)
mpg_at_max_hp = max_hp_row['mpg'].values[0]

print(f"hp列最大值对应的mpg值为:{mpg_at_max_hp}")

2. 多列最大值对应同一列的值(大型DataFrame优化版)

针对大型DataFrame,要尽量避免重复遍历数据。这里我们要找qsec、hp、wt三列各自最大值对应的mpg值,推荐用批量索引的方式提升效率:

高效实现方式

# 定义需要查询的目标列
target_columns = ['qsec', 'hp', 'wt']

# 批量获取每个列最大值的行索引
max_indices = [mtcars[col].idxmax() for col in target_columns]

# 一次性提取所有对应的mpg值,并用目标列名作为索引,结果更清晰
result_df = mtcars.loc[max_indices, ['mpg']]
result_df.index = target_columns

print("各列最大值对应的mpg值:")
print(result_df)

循环遍历方式(适合新手理解)

如果想一步步观察每一列的结果,也可以用循环实现:

for col in target_columns:
    # 获取当前列的最大值
    max_val = mtcars[col].max()
    # 提取对应行的mpg值
    mpg_val = mtcars.loc[mtcars[col] == max_val, 'mpg'].values[0]
    print(f"{col}列最大值对应的mpg值:{mpg_val}")

小提示:如果某列存在多个相同的最大值,idxmax()只会返回第一个出现的索引;如果需要获取所有最大值对应的行,把idxmax()换成条件筛选即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:27:24