如何对含DateTime列的DataFrame按月份分组,实现多列不同聚合?
按月份分组聚合DataFrame的实现方法
步骤说明与代码示例
假设你的DataFrame名为df,可通过以下步骤实现需求:
- 确认/转换日期格式(若Date列尚未转为datetime类型):
import pandas as pd df['Date'] = pd.to_datetime(df['Date'])
- 按月份分组并执行聚合操作:
利用dt.to_period('M')将日期转换为年月周期(格式如2019-05),再通过agg()方法分别指定不同列的聚合规则:
monthly_summary = df.groupby(df['Date'].dt.to_period('M')).agg( 总游戏次数=('Games Played', 'sum'), 平均评分=('Rating', 'mean') ).reset_index()
代码解释
df['Date'].dt.to_period('M'):将Date列的日期转换为年月周期,确保分组严格按自然月划分,避免按天或其他时间单位分组的误差。agg():通过关键字参数定义各列的聚合逻辑:总游戏次数=('Games Played', 'sum'):对"Games Played"列按月份求和,结果列命名为"总游戏次数"平均评分=('Rating', 'mean'):对"Rating"列按月份求算术平均,结果列命名为"平均评分"
reset_index():将分组后的年月周期从索引转为普通列,方便后续查看、筛选或导出数据。
示例输出
运行代码后,monthly_summary的结构大致如下:
| Date | 总游戏次数 | 平均评分 |
|---|---|---|
| 2019-05 | 8 | 22.0 |
| 2023-01 | 10 | 32.0 |
内容的提问来源于stack exchange,提问作者imad97
相关产品推荐
相关产品推荐

