gpt4 book ai didi

python - Pandas 的前一组均值变化

转载 作者:行者123 更新时间:2023-12-02 01:53:27 27 4
gpt4 key购买 nike

我有一个如下所示的表格:

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() 放在最后,但它只会滞后/领先 max 行,但我需要按组排列它。

请帮忙

最佳答案

您可以使用 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

关于python - Pandas 的前一组均值变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69905805/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com