分组并排序 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
我有一个数据框:
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