Pandas技术问题:如何获取另一列最大值所在行的指定列值?
解决方法:获取某列最大值对应行的指定列值
你的代码df["Column1"][df["Column2"].max()]逻辑错误——df["Column2"].max()返回的是Column2的最大值,你用这个数值当索引去取Column1的元素,这和找最大值所在行完全无关:索引不一定等于Column2的数值,自然会报错或者返回错误结果。
下面是两种正确的实现方式:
方法1:用idxmax()定位最大值所在行
idxmax()会返回Column2最大值对应的索引,直接用这个索引取Column1的值:
# 获取第一个最大值对应的Column1值 df.loc[df["Column2"].idxmax(), "Column1"]
如果Column2有多个相同的最大值,这个方法会返回第一个出现的那一行的Column1值。
方法2:用布尔索引筛选所有最大值行
如果需要获取所有Column2等于最大值的行的Column1值,可以用布尔筛选:
# 获取所有最大值对应的Column1值(返回Series) df.loc[df["Column2"] == df["Column2"].max(), "Column1"] # 只取第一个结果的话,加.iloc[0] df.loc[df["Column2"] == df["Column2"].max(), "Column1"].iloc[0]
示例演示
比如构造如下DataFrame:
import pandas as pd data = { "Column1": ["A", "B", "C", "D"], "Column2": [10, 30, 20, 30] } df = pd.DataFrame(data)
- 用
idxmax()方法得到的结果是"B"(第一个最大值所在行的Column1) - 用布尔索引得到的是包含
"B"和"D"的Series
内容的提问来源于stack exchange,提问作者Ondřej Smečka
相关产品推荐
相关产品推荐

