如何根据函数中的列值对列进行分组和排序

我有一个如下的数据框,我需要编写一个函数,它应该能够给我以下结果:

输入参数:

  1. 国家,例如 'INDIA'

  2. 以年龄为例 'Student'

我的输入数据框如下所示:

   Card Name    Country      Age         Code  Amount

0        AAA      INDIA    Young        House     100

1        AAA  Australia      Old     Hardware     200

2        AAA      INDIA  Student        House     300

3        AAA         US    Young     Hardware     600

4        AAA      INDIA  Student  Electricity     200

5        BBB  Australia    Young  Electricity     100

6        BBB      INDIA  Student  Electricity     200

7        BBB  Australia    Young        House     450

8        BBB      INDIA      Old        House     150

9        CCC  Australia      Old     Hardware     200

10       CCC  Australia    Young        House     350

11       CCC      INDIA      Old  Electricity     400

12       CCC         US    Young        House     200

预期的输出将是


          Code  Total Amount  Frequency  Average

0  Electricity           400          2      200

1        House           300          1      300

根据金额的总和,前 10 名(在我们的例子中,我们只能获得给定国家(= 印度)和年龄(= 学生)的前 2 名代码。此外,它还应该提供一个新的“频率”列,该列将计算编号。该组和“平均”列中的记录数将是总和/频率


我试过了


df.groupby(['Country','Age','Code']).agg({'Amount': sum})['Amount'].groupby(level=0, group_keys=False).nlargest(10)

产生


Country    Age      Code       

Australia  Young    House          800

           Old      Hardware       400

           Young    Electricity    100

INDIA      Old      Electricity    400

           Student  Electricity    400

                    House          300

           Old      House          150

           Young    House          100

US         Young    Hardware       600

                    House          200

Name: Amount, dtype: int64

不幸的是,这与预期的输出不同。


翻过高山走不出你
浏览 158回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python