我有一个包含3列( user_id、year_month和value )的dataframe,我想为每一个唯一的user_id自动计算一年的最后6个月的平均值,并将它分配给新的列。
user_id value year_month
1 50 2021-01
1 54 2021-02
.. .. ..
1 50 2021-11
1 47 2021-12
2 36 2021-01
2 48.5 2021-05
.. .. ..
2 54 2021-11
2 30.2 2021-12
3 41.4 2021-01
3 48.5 2021-02
3 41.4 2021-05
.. .. ..
3 30.2 2021-12
Total year has 12-24 months
to get jan 2022 value[dec 2021 to july 2021]=[55+32+33+63+54+51]/6
to get feb 2022 value[jan 2022 to aug 2021] =[32+33+37+53+54+51]/6
to get mar 2022 value[feb 2022 to sep 2021] =[45+32+33+63+54+51]/6
to get apr 2022 value[mar 2022 to oct 2021] =[63+54+51+45+32+33]/6发布于 2022-07-25 17:31:32
第一个索引,日期时间列
df = df.set_index('year_month')然后执行以下操作
df.groupby('UserId').rolling('6M').transform('avg')这是最正确的方法,但是这里有一个更直观的方法
df.sort_values('year_month').groupby('UserId').rolling(6).transform('avg') # Returns wanted series就像保罗说的
https://stackoverflow.com/questions/73112627
复制相似问题