如何为每日分组的时间序列数据计算var列标准差并新增std列?
按日期计算var列标准差并添加新列的实现方法
1. 确保时间列格式正确
首先需要确认timestamp列是datetime类型,如果原始数据中该列是字符串,先做格式转换:
import pandas as pd # 转换timestamp为datetime格式 df['timestamp'] = pd.to_datetime(df['timestamp'])
2. 分组计算并生成std列
使用groupby结合transform方法,直接将每个日期对应的var列标准差映射到原数据的每一行:
# 按日期分组计算标准差,保留1位小数匹配示例格式 df['std'] = df.groupby(df['timestamp'].dt.date)['var'].transform(lambda x: round(x.std(), 1))
关键逻辑说明
df['timestamp'].dt.date:从时间戳中提取纯日期部分作为分组依据,确保同一天的所有数据被归为一组。transform:将分组计算出的标准差结果自动广播回原数据的每一行,实现同一日期的所有行共享同一个标准差数值。round(x.std(), 1):计算标准差后保留1位小数,和示例输出的格式完全匹配。
结果验证
- 2020-10-10的var值为
[10,20,30],计算得标准差≈8.2,与示例一致。 - 2020-10-11的var值为
[15,50,5],计算得标准差≈19.3,与示例一致。
内容的提问来源于stack exchange,提问作者prof32
相关产品推荐
相关产品推荐

