[英]Previous group mean shift in pandas
我有一张看起来像这样的表:
date revenue
2021-01-01 20
2021-01-02 30
...
2021-01-31 50
2021-02-01 35
2021-02-02 67
我想计算上个月每一行的最大收入。
我可以计算当月的最大收入:
df['max']=df.groupby(df['date'].dt.month)[revenue'].transform(max)
它看起来像这样:
date revenue max
2021-01-01 20 50
2021-01-02 30 50
...
2021-01-31 50 50
2021-02-01 35 67
2021-02-02 67 67
但我希望它是:
date revenue max
2021-01-01 20 nan
2021-01-02 30 nan
...
2021-01-31 50 nan
2021-02-01 35 50
2021-02-02 67 50
我试图把.shift()
放在最后,但它只会按行滞后/领先,但我需要按组。
请帮忙
您可以使用shift
map
进行groupby
s = df.date.dt.strftime('%Y%m')
df['new'] = s.map(df.groupby(s).revenue.max().shift())
df
Out[62]:
date revenue new
0 2021-01-01 20 NaN
1 2021-01-02 30 NaN
2 2021-01-31 50 NaN
3 2021-02-01 35 50.0
4 2021-02-02 67 50.0
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.