如何在执行groupby函数时获取列的值
嗨,我在此期间有一个带有日期时间和高低的数据框。例如。它的 5 分钟数据称为 df
| 约会时间 | 高的 | 低的 | |
|---|---|---|---|
| 0 | 2020-12-02 09:15:00 | 590.349976 | 584.299988 |
| 1 | 2020-12-02 09:20:00 | 593.900024 | 588.750000 |
| 2 | 2020-12-02 09:25:00 | 594.900024 | 592.450012 |
| 3 | 2020-12-02 09:30:00 | 593.849976 | 591.799988 |
| 4 | 2020-12-02 09:35:00 | 594.400024 | 592.200012 |
| 5 | 2020-12-02 09:40:00 | 596.250000 | 593.099976 |
| 6 | 2020-12-02 09:45:00 | 596.849976 | 593.102476 |
| 7 | 2020-12-02 09:50:00 | 595.400024 | 592.950012 |
| 8 | 2020-12-02 09:55:00 | 596.500000 | 594.500000 |
回答
您可以使用包含聚合函数的字典以频率和聚合group数据帧:pd.Grouper15min
d = {'High': ('High', 'max'), 'Low': ('Low', 'min'),
'High date': ('High', 'idxmax'), 'Low date': ('Low', 'idxmin')}
df.set_index('Datetime').groupby(pd.Grouper(freq='15min')).agg(**d)
High Low High date Low date
Datetime
2020-12-02 09:15:00 594.900024 584.299988 2020-12-02 09:25:00 2020-12-02 09:15:00
2020-12-02 09:30:00 596.250000 591.799988 2020-12-02 09:40:00 2020-12-02 09:30:00
2020-12-02 09:45:00 596.849976 592.950012 2020-12-02 09:45:00 2020-12-02 09:50:00