Pandas groupby 自定义聚合计算

我有以下country wise orders data过去两周的数据框。我想计算与上周相比按国家/地区、开始日期和结束日期分组的食品订单的百分比变化(增加或减少) 。

https://img1.sycdn.imooc.com/652f994f000101c606510101.jpg

Formula = (this_week_orders*100)/(last_week_orders) - 100

对于上面的 df,我想得到最终的数据框如下

正如我们所看到的,Russia had a decrease in order count of 33%India had an increase of 50%上周相比

https://img1.sycdn.imooc.com/652f99580001ef0b03500064.jpg

请建议如何编写自定义聚合函数,因为我只熟悉标准函数,如 sum() 、 count() 等......



翻过高山走不出你
浏览 84回答 1
1回答

梵蒂冈之花

df = pd.DataFrame({'start_date':['2020-09-21','2020-09-21','2020-09-28', '2020-09-28'],                    'end_date':['2020-09-27', '2020-09-27', '2020-10-04', '2020-10-04'],                  'Country':['Russia', 'India','Russia','India'],                    'orders':[150,80,100,120]})df['start_date'] = pd.to_datetime(df['start_date'])df.sort_values(by='start_date', inplace=True)df['% Change'] = df.groupby('Country')['orders'].pct_change()输出    start_date    end_date  Country orders  % Change0   2020-09-21  2020-09-27  Russia  150          NaN1   2020-09-21  2020-09-27  India   80           NaN2   2020-09-28  2020-10-04  Russia  100    -0.3333333   2020-09-28  2020-10-04  India   120     0.500000
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python