按多列分组的 pandas df 的百分比计数

percentage count for pandas df grouped by multiple columns

我有两个 pandas df。数据按月份、类别、产品分组。它还有一个支出栏。我需要计算支出列的百分比。下面是 df_raw:

的示例
                                         spend_sum
category     month     product_list
Home          1         A                    10
                        B                    20
                        C                    30

Home          2         A                    40
                        B                    50
                        C                    60

下面是df_new的例子:

                                         spend_sum
category     month     product_list
Home          1         A                    1
                        B                    2
                        C                    3

Home          2         A                    20
                        B                    10
                        C                    5

我的代码是:

df_raw = df.explode('product_list').groupby(['category', 'month', 'product_list']).count()

我要分df_new['spend_sum'] / df_raw['spend_sum'] 期望的输出是:

                                         percentage
category     month     product_list
Home          1         A                    0.1
                        B                    0.1
                        C                    0.1

Home          2         A                    0.5
                        B                    0.2
                        C                    0.008

只需这样做:

df_new['pct'] = df_new['spend_sum']/df_raw['spend_sum']

                             spend_sum       pct
category month product_list
Home     1     A                     1  0.100000
               B                     2  0.100000
               C                     3  0.100000
         2     A                    20  0.500000
               B                    10  0.200000
               C                     5  0.083333