python - 在具有相关列名和索引的数据框中查找最大值
问题描述
让我们来看看这个小数据框:
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
请问我该怎么办?
解决方案
将Name
column 转换为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
推荐阅读
- mongodb - 在同一台服务器上运行具有 3 个容器的 mongodb 副本集是否可以节省?
- jenkins - Jenkins - 共享库 CpsCompilationErrorsException - 无法解析类
- jmeter - Jmeter登录问题?
- android - 想法布局预览中的“无法实例化一个或多个类”
- python-3.x - 如何根据数组的密度对数组进行二次采样?(去除频繁值,保留稀有值)
- python - Python re.findall() 不适用于可选匹配(使用问号)
- asp.net-mvc - 如何使用 OAuth2/OpenIdConnect 实现“代理”
- python - botocore.errorfactory.InvalidS3ObjectException:
- javascript - Is it possible to enque commits to send in batch insted of one by one in vuex?
- node.js - 如何在 couchdb 中创建数据库