使用Python Pandas按时间顺序排序月度均值数据的问题
解决方案
方法1:基于现有代码直接修复排序问题
你执行groupby操作后,year和month会变成结果的多级行索引,直接调用sort_index()方法即可实现按年份升序、同年内月份升序的排序规则:
df = df.groupby(['year', 'month']).mean() # 新增以下排序代码即可 df = df.sort_index()
如果需要把索引转回普通列方便后续处理,可以再加reset_index():
df = df.groupby(['year', 'month']).mean().sort_index().reset_index()
方法2:时间序列专用聚合方案(更推荐)
针对时间序列类数据,更建议先把日期列转为Pandas原生datetime类型,用resample方法做月度聚合,天然自带时间顺序,无需额外排序:
import pandas as pd # 把Date列转为datetime格式,匹配你数据的日/月/年格式 df['Date'] = pd.to_datetime(df['Date'], format='%d/%m/%Y') # 按每月频率重采样计算平均值 df_monthly = df.set_index('Date').resample('M')['Current_BP'].mean().reset_index()
聚合后的结果自动按时间先后排序,也可以按需提取年月字段:
df_monthly['year'] = df_monthly['Date'].dt.year df_monthly['month'] = df_monthly['Date'].dt.month
内容的提问来源于stack exchange,提问作者LukeM
相关产品推荐
相关产品推荐

