用另一个数据框填充 NA

Infill NAs with another dataframe

我有一个时间序列数据框如下;


            Volume
1992-04-01  357.073
1992-04-02  341.931
1992-04-03  318.777
1992-04-04  312.494
1992-04-05  270.837
.
.
.
2002-12-31  283.78


有些数据有差距,我想用“10 年正常”来填补这些差距;

我可以通过以下方式生成法线;

df_norm = df.groupby(by=[df.index.month, df.index.day]).mean()

哪个returns;

        Volume
1       337.1108
2       362.6250
3   1    354.4670
4       364.3080
5       374.0428

然后我尝试用 df_norm 填充 df 的 na() 但努力做到正确;

这不起作用,因为索引不同..

df  = df.asfreq('d')
df  = df.set_index(df.index.day).fillna(df_fut).set_index(df.index)

有办法解决这个问题吗?

如有任何帮助,我们将不胜感激!

这应该有效:

df['Volume'] = df['Volume'].fillna(df.groupby(by=[df.index.month & df.index.day])['Volume'].transform('mean'))