如何对pandas分组聚合得到的numpy形式结果进行排序?
实现代码
你可以直接用以下代码实现需求:
import pandas as pd import numpy as np # 分组聚合时设置as_index=False,保留seller为普通列,不会转为行索引 seller_total = df.groupby("seller", as_index=False).aggregate({"price_paid": np.sum}) # 按price_paid列降序排序 sorted_seller = seller_total.sort_values(by="price_paid", ascending=False) # 可选:设置浮点数显示格式,禁用科学计数法,金额保留2位小数 pd.set_option("display.float_format", lambda x: "%.2f" % x) # 输出结果 print(sorted_seller)
原写法问题说明
之前的写法问题核心有两点:
groupby默认会把分组键seller转为行索引,直接对聚合结果切片倒序时,容易丢失索引对应的卖家信息,最终只剩数值序列- 科学计数法是pandas/numpy对特定范围浮点数的默认显示规则,修改显示格式或者对金额列做小数位截断即可解决
如果不需要全局修改浮点数显示规则,也可以仅对当前结果的金额列做处理:
sorted_seller["price_paid"] = sorted_seller["price_paid"].round(2)
内容的提问来源于stack exchange,提问作者prettyfrank
相关产品推荐
相关产品推荐

