在数据框中添加历史平均值的未来日期



我有一个daily以下格式的数据帧(YYYY-MM-DD)。每个日期在Type列中有2种类型,分别是"one_answers"B".

Date         Type    Value
2010-01-01       A         8
2010-01-01       B         5
2010-01-02       A         81
2010-01-02       B         7
......
2020-06-23       A         7
2020-06-23       B         7.1
2020-06-24       A         8
2020-06-24       B         11
...........
2021-10-09       A         5 
2021-10-09       B         17
2021-10-10       A         1
2021-10-10       B         10

我想将未来日期附加到这个数据帧,直到当前月的最后一个日期,这样未来日期的值等于过去10年该特定日期的平均值,类型为.

For date20121-10-11;A型= 2011 ~ 2020年10月11日A型值的平均值,以此类推。我想填充这些未来值,直到当前月的最后一天。

Date         Type    Value
2021-10-11       A         Avg for 11 Oct from 2011 to 2020
2021-10-11       B         Avg for 11 Oct from 2011 to 2020
..........
2021-10-31       A         Avg for 31 Oct from 2011 to 2020
2021-10-31       B         Avg for 31 Oct from 2011 to 2020

我如何实现这个熊猫。

我在过滤df仅为过去10年的数据后尝试如下:

df = df.groupby([df.index.month, df.index.day, "Type"]).mean()

但是如何将值插入到数据框架中呢?

感谢

我认为这个复杂的代码片段将工作。我不知道是否有简单的方法。

df.index = df.Date
df["new"] = df.Date.astype(str).str[-5:]
df=df.groupby(["new","Type"],sort=False).expanding().mean().reset_index().sort_values(["Date","Type"]).reset_index(drop=True)
df["Value"] = df.groupby(["new","Type"]).shift().Value
df=df[["Date","Type","Value"]]

最新更新