如何对pandas DataFrame按月份优先排序 实现温度数据按月分组绘图
排序逻辑调整方案
你已经将Date列解析为datetime类型,可以直接通过日期内置属性提取排序键实现需求:
- 新增月份、年份辅助字段,按「月份优先、年份其次」的规则对DataFrame排序:
# 提取排序用的月份、年份字段 df1['month'] = df1['Date'].dt.month df1['year'] = df1['Date'].dt.year # 排序规则:先按月份升序,同月份下按年份升序 df1 = df1.sort_values(by=['month', 'year'], ascending=[True, True])
- 后续按日期分组统计温度时,关闭groupby的默认自动排序,保留上面调整好的行顺序即可:
# groupby加sort=False参数,避免被自动按日期重排 str_dates_temp = df1.groupby("Date", sort=False)["str_dates"].unique().to_list() str_dates = [''.join(x) for x in str_dates_temp] grouped_max_list = df1.groupby("Date", sort=False)["Data_Value"].max().to_list() grouped_min_list = df1.groupby("Date", sort=False)["Data_Value"].min().to_list()
如果后续不需要保留month、year辅助字段,可在排序完成后删除:
df1.drop(['month', 'year'], axis=1, inplace=True)
内容的提问来源于stack exchange,提问作者MarkS
相关产品推荐
相关产品推荐

