Pandas将年份、月份整数列转换为Datetime并计算季度平均值的问题
问题原因
你之前的代码仅向pd.to_datetime传入了单独的月份整数列,pandas默认会将这类整数识别为自1970-01-01 00:00:00起的纳秒时间戳,因此会得到全是1970年的错误日期结果。
实现方案
有两种常用方案可以实现需求:
方案1:先转datetime再提取季度(适合后续还要做其他时间相关计算的场景)
# 组合year、month列生成标准日期列,默认补1号作为日 df['date'] = pd.to_datetime(df[['year', 'month']].assign(day=1)) # 从日期列提取季度 df['Quarter Q'] = df['date'].dt.quarter # 按年份、季度分组计算data列的平均值 result = df.groupby(['year', 'Quarter Q'], as_index=False)['data'].mean()
方案2:直接通过整数运算计算季度(更高效,不需要生成日期列)
# 公式:(月份-1)整除3 +1,直接得到所属季度 df['Quarter Q'] = (df['month'] - 1) // 3 + 1 # 分组求平均值 result = df.groupby(['year', 'Quarter Q'], as_index=False)['data'].mean()
如果需要和示例格式对齐小数位数,可以在求均值后加.round(9)调整精度,最终result的输出就和期望结果一致。
内容的提问来源于stack exchange,提问作者user2100039
相关产品推荐
相关产品推荐

