分组并排序 Pandas

Groupby and sort Pandas

我有一个数据框:

df = pd.DataFrame({ 
    'Metric': ['Total Assets', 'Total Promo', 'Total Assets', 'Total Promo'],
    'Risk': ['High', 'High','Low', 'Low'],
    '2021': [ 200, 100, 400, 50]})

我想按 Metric 列分组并按 '2021' 列排序。

我试过了:

df = df.sort_values(['2021'],ascending=False).groupby(['Metric', 'Risk'])

但我得到以下输出:

<pandas.core.groupby.generic.DataFrameGroupBy object at 0x00000213CA672B48>

输出应如下所示:

df = pd.DataFrame({ 
    'Metric': ['Total Assets', 'Total Assets', 'Total Promo', 'Total Promo'],
    'Risk': ['Low', 'High', 'High', 'Low'],
    '2021': [ 400, 200, 100,  50]})

如果我没理解错的话,您想按“公制”列(升序)排序,然后按“2021”列(降序)排序:

df = df.sort_values(["Metric", "2021"], ascending=[True, False])
print(df)

打印:

         Metric  Risk  2021
0  Total Assets   Low   400
1  Total Assets  High   200
2   Total Promo  High   100
3   Total Promo   Low    50