【发布时间】:2019-07-05 01:12:28
【问题描述】:
我有一个包含 4 列的数据框,其中前两列由字符串(分类变量)组成,最后两列是数字。
Type Subtype Price Quantity
Car Toyota 10 1
Car Ford 50 2
Fruit Banana 50 20
Fruit Apple 20 5
Fruit Kiwi 30 50
Veggie Pepper 10 20
Veggie Mushroom 20 10
Veggie Onion 20 3
Veggie Beans 10 10
如何使数据框根据 Type 列上 Price 的聚合总和按降序排序,并让 Price 列的 Subtype 列也按降序排序?像这样:
Type Subtype Price Quantity
Fruit Banana 50 20
Kiwi 30 50
Apple 20 5
Car Ford 50 2
Toyota 10 1
Veggie Mushroom 20 10
Onion 20 3
Beans 10 10
Pepper 10 20
我尝试了以下方法,但它没有按降序对 Subtype 列进行排序:
df = df.groupby(['Type','Subtype'])['Price', 'Quantity'].agg({'Price':sum})
i = df.index.get_level_values(0)
df = df.iloc[i.reindex
(df['PRICE'].groupby(level=0,
group_keys=False).sum().sort_values('PRICE', ascending=False).index)[1]]
df.columns = df.columns.get_level_values(1)
编辑:子类型下有多个相同的项目,所以我希望类型和子类型列也分组。
【问题讨论】:
-
预期输出是什么?
-
@jezrael 抱歉,预期的输出是我上面帖子中的第二个数据框。
标签: python pandas pandas-groupby