为何Pandas groupby()未正确展示按产品分组的总销售额?
问题原因与解决方法
为什么输出的是SeriesGroupBy对象?
df.groupby("product")["sales"]只完成了数据分组的操作:它把原DataFrame按照product列的不同值分成了对应的组,但并没有对每组的sales数据执行任何计算。返回的SeriesGroupBy对象本质是一个"待计算的分组容器",不是最终的聚合结果,所以打印时只会输出对象的内存引用信息。
正确的实现方式
要得到各产品的总销售额,需要在分组对象后调用聚合方法,比如sum(),让Pandas对每组的sales列求和:
import pandas as pd df = pd.DataFrame({ "product": ["apple", "banana", "apple", "orange", "banana"], "quantity": [2, 3, 1, 5, 2], "price": [3, 2, 3, 4, 2] }) df["sales"] = df["quantity"] * df["price"] # 调用sum()完成分组求和 result = df.groupby("product")["sales"].sum() print(result)
运行结果
执行后会得到你预期的输出:
product apple 9 banana 10 orange 20 Name: sales, dtype: int64
额外说明:除了sum(),你还可以根据需求调用其他聚合方法,比如mean()(求平均值)、max()(求最大值)等,来完成不同的分组计算。
内容的提问来源于stack exchange,提问作者Kevin Jame
相关产品推荐
相关产品推荐

