pandas groupby用法之as_index
DataFrame.groupby(self,by=None,axis=0,level=None,as_index=True,sort=True,group_keys=True,squeeze=False,observed=False,**kwargs)
此次用例是讲解使用groupby分组计算后,得到的结果表头信息并不在一行,分组后的列字段只有一个值,并不是所有。要想实现列名都在第一行我们可以使用as_index;
那么今天就讲解一下as_index的用法:
as_index : bool,默认为True
对于聚合输出,返回以组标签作为索引的对象。仅与DataFrame输入相关。as_index = False实际上是“SQL风格”的分组输出。
如下是没有使用as_index的实验结果:
import pandasas pd
from pyechartsimport Line
df= pd.DataFrame({'name': ['张三','李四','王五','张三','王五','张三','赵六','张三','赵六'],
'sex': ['男','女','男','男','男','男','女','女','女'],
'num1': [2.9,9.0,8.5,5.6,5.6,5.2,1.2,4.5,3.2],
'num2': [5.2,2.5,6.3,5.6,4.5,5.6,1.2,8.5,1.2]
})
# 根据其中两列分组,并求均值
df_expenditure_mean= df.groupby(['sex','name'])['num1'].agg({'means':'mean'})
print(df_expenditure_mean)
如下是使用as_index的结果:
import pandasas pd
from pyechartsimport Line
df= pd.DataFrame({'name': ['张三','李四','王五','张三','王五','张三','赵六','张三','赵六'],
'sex': ['男','女','男','男','男','男','女','女','女'],
'num1': [2.9,9.0,8.5,5.6,5.6,5.2,1.2,4.5,3.2],
'num2': [5.2,2.5,6.3,5.6,4.5,5.6,1.2,8.5,1.2]
})
# 根据其中两列分组,并求均值
df_expenditure_mean= df.groupby(['sex','name'],as_index=False)['num1'].agg({'means':'mean'})
print(df_expenditure_mean)
通过两图对比,发现他们之间的区别。并且实现了列名都在第一行
好啦,就到这里啦,谢谢。