Pandas:按多列分组,找到最大值并保留其他列在数据框中

6
我想要对数据框中的多个列进行分组,并保留最大值和相应的日期列。
以下是数据框的样子:
``` Index Site Device Type Value Time 0 AAA A 10 2021-02-02 01:30:00 1 AAA A 5 2021-02-02 01:35:00 2 AAA B 2 2021-02-02 01:40:00 3 BBB C 3 2021-02-02 02:00:00 4 BBB C 11 2021-02-02 02:05:00 5 BBB C 20 2021-02-02 02:10:00 6 BBB D 30 2021-02-02 04:00:00 ```
我试图得到以下输出:
``` Index Site Device Type Value Time 0 AAA A 10 2021-02-02 01:30:00 1 AAA B 2 2021-02-02 01:40:00 2 BBB C 20 2021-02-02 02:10:00 3 BBB D 30 2021-02-02 04:00:00 ```
当我尝试使用以下groupby时,Time列会被删除: df_max = df.groupby(['Site','Device Type'],as_index=False)['Value'].max() 我想保留与找到的最大值相对应的Time值。
谢谢。
1个回答

10
你已经非常接近了。尝试使用idxmax并显示该位置的行:
df.loc[df.groupby(['Site','Device Type'])['Value'].idxmax()].reset_index(drop=True)

    Index   Site    Device Type Value   Time
0   0       AAA     A           10      2021-02-02 01:30:00
1   2       AAA     B           2       2021-02-02 01:40:00
2   5       BBB     C           20      2021-02-02 02:10:00
3   6       BBB     D           30      2021-02-02 04:00:00

1
非常感谢!! 这个完美地运作 :) 你让我的一天! - user11427018

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接