use*_*018 7 max dataframe pandas pandas-groupby
我希望将数据框中的多个列分组,仅保留最大值,并保留相应的日期列
下面是数据框的样子:
| 指数 | 地点 | 设备类型 | 价值 | 时间 |
|---|---|---|---|---|
| 0 | AAA | A | 10 | 2021-02-02 01:30:00 |
| 1 | AAA | A | 5 | 2021-02-02 01:35:00 |
| 2 | AAA | 乙 | 2 | 2021-02-02 01:40:00 |
| 3 | 血脑屏障 | C | 3 | 2021-02-02 02:00:00 |
| 4 | 血脑屏障 | C | 11 | 2021-02-02 02:05:00 |
| 5 | 血脑屏障 | C | 20 | 2021-02-02 02:10:00 |
| 6 | 血脑屏障 | D | 30 | 2021-02-02 04:00:00 |
我正在尝试获得以下输出:
| 指数 | 地点 | 设备类型 | 价值 | 时间 |
|---|---|---|---|---|
| 0 | AAA | A | 10 | 2021-02-02 01:30:00 |
| 1 | AAA | 乙 | 2 | 2021-02-02 01:40:00 |
| 2 | 血脑屏障 | C | 20 | 2021-02-02 02:10:00 |
| 3 | 血脑屏障 | D | 30 | 2021-02-02 04:00:00 |
当我尝试以下 groupby 时,时间列会下降:
df_max = df.groupby(['Site','Device Type'],as_index=False)['Value'].max()
我希望保持时间值与找到的最大值相对应。
谢谢
Pyg*_*irl 11
你们非常接近。尝试使用idxmax并在该位置显示行:
df.loc[df.groupby(['Site','Device Type'])['Value'].idxmax()].reset_index(drop=True)
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8080 次 |
| 最近记录: |