python-3.x - Python:找到一列的最大值并在同一行中提取其他列的值
问题描述
我有下一个包含两列的数据框:
Idx =[1,2,3,4,5]
Values =[7,-2,-1,10,5]
lists = list(zip(Idx, Values))
dfsr = pd.DataFrame(lists, columns = ['Idx', 'Values'])
dfsr
这会生成下一个 DataFrame
Idx Values
0 1 7
1 2 -2
2 3 -1
3 4 10
4 5 5
我要做的是在“values”列中找到最大值并选择“Idx”列的相应值。
我试过这个:
MVI = dfsr[dfsr.Values == dfsr.Values.max()]
MVI
这导致:
Idx Values
3 4 10
但我需要的只是 Idx 的值。return 应该只是 4 作为以后使用的数字。
有人可以帮我做这个简单的事情吗?非常感谢!
解决方案
尝试:
>>> MVI = dfsr.loc[dfsr.Values == dfsr.Values.max(), 'Idx']
>>> MVI
3 4
Name: Idx, dtype: int64
或者,如果您只想要对象本身(而不是pandas.Series
对象):
>>> MVI = dfsr.loc[dfsr.Values == dfsr.Values.max(), 'Idx'].to_list()[0]
>>> MVI
4
推荐阅读
- ruby - 如何检查数字是否以 1 或 11 结尾?
- azure - 使用 Terraform 将证书指纹附加到 Azure 中的应用注册
- ios - 'FBLoginButton' 符合 'View'
- python - 单击时未执行 Python Tkinter 菜单
- operating-system - 使用分页实现虚拟内存是什么意思?
- git - 插件管理器 jenkins 中没有可用的插件
- r - 有没有办法在 R 中均衡两个不同的数据集?
- firebase - Firestore 计费和使用 API
- spring-boot - 如何在 thymeleaf 表达式 th:each 中使用 kotlin 表达式?
- swift - AVPlayer seek 后的当前时间不正确