首页 > 解决方案 > 在具有相关列名和索引的数据框中查找最大值

问题描述

让我们来看看这个小数据框:

df = pd.DataFrame(dict(Name=['Jason_Fly','Alan_Smith','Steve_Rowland'], Col1=[1,2,3], Col2=[1,3,9],Col3=[5,6,8]))

            Name  Col1  Col2  Col3
0      Jason_Fly     1     1     5
1     Alan_Smith     2     3     6
2  Steve_Rowland     3     9     8

我想获得数据框中的最大值,以及相关列的名称和索引(或者理想情况下,列名称中的相应值)。

预期输出:
最大值:9
对应列:Col2
对应索引:2 | 列名称中的对应值:Steve_Rowland

请问我该怎么办?

标签: pythonpandasmax

解决方案


Namecolumn 转换为index,因此可以获得每列和行的第一个最大值并使用Series.idxmax

df1 = df.set_index('Name')

max1 = df1.to_numpy().max()
print (max1)
9

c = df1.max(axis=0).idxmax()
print (c)
Col2

n = df1.max(axis=1).idxmax()
print (n)
Steve_Rowland

另一种解决方案是获取最大值的位置并索引第一个匹配值:

max1 = df1.to_numpy().max()
print (max1)
9

a,b  = np.where(df1 == max1)
print (a)
[2]

print (b)
[1]

c = df1.columns[b[0]]
print (c)
Col2

n = df1.index[a[0]]
print (n)
Steve_Rowland

推荐阅读