python - 获取比较多个列的最大值并返回特定值

标签 python python-3.x pandas dataframe

我有一个像这样的数据框:

Sequence    Duration1   Value1  Duration2   Value2  Duration3   Value3
1001        145         10      125         53      458         33
1002        475         20      175         54      652         45
1003        685         57      687         87      254         88
1004        125         54      175         96      786         96
1005        475         21      467         32      526         32
1006        325         68      301         54      529         41
1007        125         97      325         85      872         78
1008        129         15      429         41      981         82
1009        547         47      577         52      543         83
1010        666         65      722         63      257         87


我想在(Duration1,Duration2,Duration3)中找到Duration的最大值,然后返回相应的Value&Sequence。

我想要的输出:

Sequence,Duration3,Value3
1008,    981,      82

最佳答案

尝试以下基于Numpy的相当简短的代码:

vv = df.iloc[:, 1::2].values
iRow, iCol = np.unravel_index(vv.argmax(), vv.shape)
iCol = iCol * 2 + 1
result = df.iloc[iRow, [0, iCol, iCol + 1]]


结果是一个系列:

Sequence     1008
Duration3     981
Value3         82
Name: 7, dtype: int64


如果您要“修复”它(第一个索引值,然后是实际值),
您可以执行以下操作:

pd.DataFrame([result.values], columns=result.index)

关于python - 获取比较多个列的最大值并返回特定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58038833/

相关文章:

python - 如何以 pythonic 方式填充 Pandas dataframe 缺失的记录?

python - 条件搜索返回一维数组的数组元组?

python - Tensorflow 上的 GPU 是否进行了非极大值抑制?

python - 将字符串的子集转换为列表中的整数

mysql - 如何从 python 调用 MySQL 中的存储过程?

xml - 如何在保留现有命名空间的同时写入 XML 文件

python-3.x - 我的着色器出现错误并且不知道如何修复

python - Pandas json_normalize 失败,JSON 中有空值

python - 如何获取第一个类型 A 的注册表和第一个类型 B 的注册表并将其移动到单行

python - Python 中的 Bland-Altman 图