【发布时间】:2021-10-16 13:00:56
【问题描述】:
假设我有一个像下面这样的 df,
column1 | column2 | column3 |column4 | column5
A | B | 5 | 4234 | 123
A | B | 2 | 432 | 3243
A | B | 10 | 123 | 43
A | B | 1 | 123 | 45
A | B | 1 | 124 | 23243
A | B | 1 | 125 | 234
A | B | 1 | 126 | 23
注意:column4 始终是唯一的
所需的df,
column1 | column2 | column3 |column4 | column5 |column6
A | B | 5 | 4234 | 123 |
A | B | 2 | 432 | 3243 |
A | B | 10 | 123 | 43 |
A | B | 1 | 123 | 45 |
A | B | 1 | 124 | 23243 |
A | B | 1 | 125 | 234 |
A | B | 1 | 126 | 23 | 23
我希望能够在column1和column2的基础上进行groupby,找到column3的最小值(在这种情况下-> 1)然后找到column4的最大值(在这种情况下-> 126)并返回其对应的 column6 值(在本例中为 -> 23)。
第 1 步 -> 找到给定 [['column1', 'column2']] 的最小值 1
column1 | column2 | column3 |column4 | column5 |column6
A | B | 5 | | 123 |
A | B | 2 | | 3243 |
A | B | 10 | | 43 |
A | B | **1** | 123 | 45 |
A | B | **1** | 124 | 23243 |
A | B | **1** | 125 | 234 |
A | B | **1** | 126 | 23 | 23
第 2 步
找到给定 [['column1', 'column2', 'column3']] 的第 4 列的最大值
column1 | column2 | column3 |column4 | column5 |column6
A | B | 5 | | 123 |
A | B | 2 | | 3243 |
A | B | 10 | | 43 |
A | B | 1 | 123 | 45 |
A | B | 1 | 124 | 23243 |
A | B | 1 | 125 | 234 |
A | B | 1 | **126** | 23 | 23
第3步返回column5对应的值23
我怎样才能做到这一点?
【问题讨论】:
-
column4的最大值是 4234,而不是 126。 -
不,你首先取 column3 的最小值(即 1),所以你剩下 123,124,125,126,其中 126 是最大值
-
可能会让你更接近...
df[df['column4'] == df.loc[df['column3'] == df['column3'].min(), 'column4'].max()]