如何在Pandas DataFrame中对分钟级时序数据去除日均值
如何在Pandas中对分钟级时间序列数据去除日均值
这事儿很简单,用Pandas的分组和transform方法就能轻松搞定,我给你一步步来演示:
1. 先构造你的原始DataFrame
首先我们把你提供的原始数据转换成Pandas DataFrame:
import pandas as pd # 构造原始数据 data = {'Col1': [5, 15, 10, 2, 2, 5]} datetime_index = pd.to_datetime([ '2022-12-25 09:01:00', '2022-12-25 09:10:00', '2022-12-25 11:12:00', '2022-12-26 10:05:00', '2022-12-26 12:29:00', '2022-12-26 13:56:00' ]) df = pd.DataFrame(data, index=datetime_index)
2. 去除日均值的核心代码
我们需要按日期分组计算每日均值,然后让原始数据减去对应日期的均值。这里用groupby结合transform方法,能保证结果和原DataFrame的索引结构完全一致:
# 按日期分组计算日均值,再从原始列中减去该均值 df['Col1'] = df['Col1'] - df.groupby(df.index.date)['Col1'].transform('mean')
3. 验证结果
运行完上面的代码后,打印df就能得到你想要的目标数据:
Col1 2022-12-25 09:01:00 -5.0 2022-12-25 09:10:00 5.0 2022-12-25 11:12:00 0.0 2022-12-26 10:05:00 -1.0 2022-12-26 12:29:00 -1.0 2022-12-26 13:56:00 2.0
关键步骤解释
df.index.date:把分钟级的DatetimeIndex转换成纯日期对象(比如2022-12-25),这样就能精准按天分组transform('mean'):计算每个日期分组的均值,并且返回和原DataFrame行数相同的序列,这样就能直接和原列做减法,不会打乱原有的时间索引
内容的提问来源于stack exchange,提问作者Vincent Clerc
相关产品推荐
相关产品推荐

