pandas DataFrame按2秒重采样计算均值并回填至原数据集实现方法问询
问题原因
你之前的写法得到的是降采样后的聚合结果,索引为每个2秒窗口的起始时间,和原DataFrame的1秒频率索引不完全匹配,所以只有对应时间点有值,其余行填充空值。
解决方法
使用resample结合transform方法,聚合后返回与原数据长度一致的结果,自动填充到对应窗口的所有行:
import pandas as pd # 示例数据集 index = pd.date_range('1/1/2000', periods=10, freq='S') data = {'value':[23,23,12,14,14,57,67,32,56,89]} series = pd.DataFrame(data, index=index) # 正确赋值方式 series['resample_value'] = series['value'].resample('2S').transform('mean')
也可以使用等价的groupby写法:
series['resample_value'] = series.groupby(pd.Grouper(freq='2S'))['value'].transform('mean')
最终效果
同一2秒窗口内的所有行都会填充对应窗口的均值,结果如下:
| 时间索引 | value | resample_value |
|---|---|---|
| 2000-01-01 00:00:00 | 23 | 23.0 |
| 2000-01-01 00:00:01 | 23 | 23.0 |
| 2000-01-01 00:00:02 | 12 | 13.0 |
| 2000-01-01 00:00:03 | 14 | 13.0 |
| 2000-01-01 00:00:04 | 14 | 35.5 |
| 2000-01-01 00:00:05 | 57 | 35.5 |
| 2000-01-01 00:00:06 | 67 | 49.5 |
| 2000-01-01 00:00:07 | 32 | 49.5 |
| 2000-01-01 00:00:08 | 56 | 72.5 |
| 2000-01-01 00:00:09 | 89 | 72.5 |
内容的提问来源于stack exchange,提问作者EngGu
相关产品推荐
相关产品推荐

