下标运算符的不同位置在pandas groupby中导致相同的结果

问题描述

我正在通过一门课程学习熊猫。在课程的分组视频中,我对这一说法感到困惑。

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

输出为:

The output

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

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

为什么在groupby之后放置下标运算符会起作用? 为什么两个语句都以相同的方式工作? 两条语句之间甚至有区别吗?

解决方法

它们是不同的:

  • 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进行分组,并取平均值和总和。

,

这是在beta.www.example.com计算中查看中间结果的一种方法。首先,创建一个简单的数据集:

curl -i -v https://example.com

第二,显示一个典型的计算:

.groupby()

第三,显示中间结果:

import pandas as pd
data = {'Age': {0: 10,1: 11,2: 12,3: 13},'Animal': {0: 'Falcon',1: 'Falcon',2: 'Parrot',3: 'Parrot'},'Max Speed': {0: 390.0,1: 350.0,2: 30.0,3: 20.0},'Type': {0: 'Captive',1: 'Wild',2: 'Captive',3: 'Wild'}}
df = pd.DataFrame(data)
print(pd.DataFrame(data))

   Age  Animal  Max Speed     Type
0   10  Falcon      390.0  Captive
1   11  Falcon      350.0     Wild
2   12  Parrot       30.0  Captive
3   13  Parrot       20.0     Wild