熟悉pandas的人应该都会发现,通过groupby聚合出来的结果,通常含有“层级索引”。通俗地说,即按照索引的优先级顺序,把索引按相同层级地合并同类项(个人的理解与语言表达可能不太恰当,见谅),最后的结果,如果输出到Excel中,即可发现,同一级索引中,相同的内容会被合并到一起(可以简单理解成“合并单元格”)。但是,有时候我们并不需要这些层级索引,因为我们之后有可能还会涉及到二次计算,或者需要以DataFrame的形式来展示数据。

今天闲来无事,于是上网搜索了一下相关的文章,想学点新知识。无意中发现除了用 .reser_index() 外,还有其它的方法。于是试验了一下,就写下这篇文章。

1. 先加载数据

df = pd.read_excel(r"D:\我的文档\jupyter.xlsx")

df

d7399701384384975504a315fc4d9346.png

2. 常规的聚合运算

# 普通的聚合运算

df.groupby(["课程性质"])["学分"].sum()

9d81e7b09067a02bf844c0e98f48c5d6.png

3. 重置索引 方法一

# 重置索引 方法一

df.groupby(["课程性质"])["学分"].sum().reset_index()

79c622619d3304b734e6288bed03faa2.png

4. 重置索引 方法二

# 重置索引 方法二

df.groupby(["课程性质"],as_index = False)["学分"].sum()

2f579cd0232fc18f10acda9b94ef7084.png

如果看不清楚,请在看下面:

5. 带两组变元(下面的两层索引纯属笔误,但懒得改了)的聚合运算

# 两层索引的聚合运算

df.groupby(["课程性质"])["学分","总评成绩"].sum()

f7d9244b62b068baee8326a1bf0ab042.png

6. 用 .reset_index() 来重置索引

# 用 .reset_index() 来重置索引

df.groupby(["课程性质"])["学分","总评成绩"].sum().reset_index()

069844bc6aa096433672e299e0f7fe26.png

7. 用 .groupby(as_index = False)来重置索引

# 用 .groupby(as_index = False) 来重置索引

df.groupby(["课程性质"],as_index = False)["学分","总评成绩"].sum()

fc135153bab5b5cbf15f6411093c65ff.png

小结:可见,在Python中的解题实现方法,有可能不只一种的。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐