如何将Pandas DataFrame中的日期列按指定季节规则分类?
正确实现日期列按季节分类的方法
实现思路
- 将列名转换为日期格式,提取月份信息,避免手动识别每个日期的月份
- 定义月份与季节的映射规则,实现批量列名替换
- 可选:按季节对数据进行聚合(如求和、均值等)
完整代码
import pandas as pd # 原DataFrame a = pd.DataFrame({'11-12-2018':[20,38,44,51], '21-01-2018':[33,49,51,68], '11-02-2018':[57,66,71,80], '03-08-2018':[33,47,51,50], '11-06-2018':[44,60,71,80], '23-07-2018':[12,23,45,55]},index=list(range(1,5))) # 1. 把列名转为日期格式,提取月份 date_cols = pd.to_datetime(a.columns, format='%d-%m-%Y') month_list = date_cols.month # 2. 定义月份到季节的映射字典 season_map = { 1: 'Winter', 2: 'Winter', 12: 'Winter', 6: 'Summer', 7: 'Summer', 8: 'Summer' } # 3. 批量替换列名为对应季节 a.columns = [season_map[month] for month in month_list] # 可选:按季节聚合数据(以求和为例) season_summary = a.groupby(a.columns, axis=1).sum() print(season_summary)
说明
这种方法无需手动指定每一列,不管有多少日期列都能自动匹配季节,比手动重命名更高效且不易出错。如果需要聚合同季节的列数据,直接用groupby即可完成。
内容的提问来源于stack exchange,提问作者Karan Prem
相关产品推荐
相关产品推荐

