我有一个熊猫时间序列数据,以DateTime为索引。我试着用一个长期的月平均值来代替每天的价值.例如:
如果我的两年的timeseries dataframe类似于:
df = pd.DataFrame({'data':np.random.rand(731)},index=pd.date_range('2000',periods=731))月平均数:
mon_mean = df.groupby(df.index.month).mean()长期平均情况如下:
1 0.497286
2 0.536500
3 0.468002
4 0.477769
5 0.543201
6 0.520326
7 0.460261
8 0.524335
9 0.521869
10 0.516423
11 0.458476
12 0.494853所以我想要的是用长期的一月平均值来代替一月的所有日数值,比如0.497286等等。但我没能做到。
发布于 2019-08-21 09:01:03
使用GroupBy.transform设置由聚合值填充的新列:
np.random.seed(2019)
df = pd.DataFrame({'data':np.random.rand(731)},index=pd.date_range('2000',periods=731))
df['mon'] = df.groupby(df.index.month)['data'].transform('mean')
print (df)
data mon
2000-01-01 0.903482 0.482155
2000-01-02 0.393081 0.482155
2000-01-03 0.623970 0.482155
2000-01-04 0.637877 0.482155
2000-01-05 0.880499 0.482155
... ...
2001-12-27 0.755412 0.519518
2001-12-28 0.858582 0.519518
2001-12-29 0.884738 0.519518
2001-12-30 0.265324 0.519518
2001-12-31 0.948137 0.519518
[731 rows x 2 columns]https://stackoverflow.com/questions/57588006
复制相似问题