首页 > 解决方案 > 下标运算符的不同位置导致熊猫 groupby 的结果相同

问题描述

我正在通过一门课程学习熊猫。在课程的 groupby 视频中,我对这个声明感到困惑。

df.set_index('STNAME').groupby(level=0)['CENSUS2010POP'].agg(avg=np.average, sum=np.sum).head()

输出是:

输出

在此语句中,下标运算符 ['CENSUS2010POP'] 放在 groupby 之后。我的问题是 groupby 返回一个包含元组的 groupby 对象。元组是完成分组的数据对和基于该分组条件的数据帧。我们如何首先为 groupby 对象下标。此外,当我以以下方式编写查询时,它仍然有效。

df.set_index('STNAME')['CENSUS2010POP'].groupby(level=0).agg(avg=np.average, sum=np.sum).head()

为什么在 groupby 之后放置下标运算符?为什么两个语句的工作方式相同?两种说法之间甚至有区别吗?

标签: pythonpandasdataframepandas-groupbydata-science

解决方案


它们是不同的:

  • df.set_index('STNAME').groupby(level=0) ['CENSUS2010POP'] .agg(avg=np.average, sum=np.sum).head()
  • df.set_index('STNAME') ['CENSUS2010POP'] .groupby(level=0).agg(avg=np.average, sum=np.sum).head()

在第一种情况下,您对所有列进行分组,取 CENSUS2010POP,取平均值和求和,而在第二种情况下,取 CENSUS2010POP,分组,取平均值和求和。


推荐阅读