You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Pandas中为时间序列数据添加上月均值与标准差列的技术求助

解决方案:为Pandas DataFrame添加上月指标的均值和标准差列

我来帮你搞定这个需求!要实现每个时间点匹配上月对应测量值的均值和标准差,我们可以通过Pandas的时间处理、分组统计和合并功能来完成,下面是详细的步骤和可运行代码:

步骤1:确保时间列是datetime类型

首先需要把Time列转换为Pandas的datetime格式,这样才能进行后续的时间操作:

import pandas as pd

# 假设你的数据已经加载到df中
df['Time'] = pd.to_datetime(df['Time'])

步骤2:生成每条数据对应的上月标识

我们需要给每一行数据标记出它对应的“上月”,用Period类型来处理月份会更准确(避免字符串处理的误差):

# 把时间转换为年月周期,然后减1得到上月
df['prev_month'] = df['Time'].dt.to_period('M') - 1

步骤3:计算每个月各指标的均值和标准差

接下来按月份分组,计算四个Value列的均值和标准差,并整理成便于合并的格式:

# 按月份分组,计算均值和标准差
month_stats = df.groupby(df['Time'].dt.to_period('M'))[['Value 1', 'Value 2', 'Value 3', 'Value 4']].agg(['mean', 'std'])

# 扁平化列名,比如把('Value 1', 'mean')改成'Value 1_mean'
month_stats.columns = [f'{col}_{stat}' for col, stat in month_stats.columns]

# 把索引(月份)转成列,并重命名为prev_month,方便后续合并
month_stats = month_stats.reset_index().rename(columns={'Time': 'prev_month'})

步骤4:合并原始数据和上月统计值

最后把原始数据和计算好的上月统计值通过prev_month列合并,这样每一行就会带上对应的上月均值和标准差:

# 左连接保证原始数据的所有行都保留
df = df.merge(month_stats, on='prev_month', how='left')

# 可以选择删除prev_month列(如果不需要的话)
df = df.drop('prev_month', axis=1)

边界情况说明

  • 对于数据中最早的月份(比如你的样例里的2020-04),它的上月是2020-03,而你的数据里没有2020-03的记录,所以这些行的上月均值和标准差会显示为NaN,这是合理的,因为没有对应的数据可以计算。
  • 如果你的数据中有跨年度的情况(比如2021-01对应2020-12),Period类型会自动处理年份的变化,不需要额外调整。

内容的提问来源于stack exchange,提问作者Nick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 14:19:05