我有一个像这样的数据框:
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/