python-3.x - 查找特定行的多个列的最大值并将最大列的标题保存到新列中
问题描述
我有一个这样的数据框
age col1 col2 col3 max
--------------------------------------
0 200 150 350
16 68 250 50
我想为每一行找到 col1、col2、col3 之间的最大值,并用最大值的列名更新最后一列“max”
第一行的示例,最大值为 350,“max”列值将是“col3”结果,如下所示:
age col1 col2 col3 max
------------------------------------------
0 200 150 350 col3
16 68 250 50 col2
我怎样才能做到这一点?
解决方案
您可以使用以下方法执行此操作pandas.DataFrame.idxmax
:
>>> df['max'] = df.idxmax(axis=1)
>>> df
age col1 col2 col3 max
0 0 200 150 350 col3
1 16 68 250 50 col2
NB1:如图所示,我将使用max_
而不是max
作为新列名,因为max
它指的是现有方法,即pandas.DataFrame.max
.
NB2:另外,为了防止age
在搜索最大值时被考虑,最好明确/限制搜索空间
>>> mxseaspace = ['col1', 'col2', 'col3']
>>> df['max_'] = df.loc[:, mxseaspace].idxmax(axis=1)
>>> df
age col1 col2 col3 max_
0 0 200 150 350 col3
1 16 68 250 50 col2
玩具数据
df = pd.DataFrame({
'age': [0, 16],
'col1': [200, 68],
'col2': [150, 250],
'col3': [350, 50],
})
推荐阅读
- java - 交易失败重审的处理
- unity3d - 如何最好地将着色器逻辑分解为可以混合和匹配的组件
- sql-server - 如何在 OPENROWSET 命令中将路径传递给 Bulk
- bash - miniconda Dockerfile 最佳实践
- javascript - OpenLayers 图标不显示
- python - Python,PyInstaller - 删除包含 exe 的文件夹
- java - (View v) 给我一个错误并显示一条红线
- python - 与 Flask 应用程序一起运行代码
- python - 即使导入成功,Python 也找不到类
- ios - iOS 内存 - 虚拟机:CG 图像和 IO 表面