0%

怎么获取多个列的最大值并返回特定值?

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

1
2
3
4
5
6
7
8
9
10
11
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。我想要的输出:

1
2
Sequence,Duration3,Value3
1008, 981, 82

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

1
2
3
4
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]]

结果是一个系列:

1
2
3
4
Sequence     1008
Duration3 981
Value3 82
Name: 7, dtype: int64

如果要调整它(第一个为索引值,然后是实际值),则可以执行以下操作:

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