熊猫中分组依据方法的'level'参数如何工作?


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

在上面的代码中,为什么有必要在groupby中指定级别参数,因为根据我的理解,只有当我们在DataFrame中有multiIndex时,才需要级别参数。

不是只有MultiIndex,它也应该在Index中使用,因为只有一个级别。

同样,对于具有聚合指定列的函数agg,需要通过元组列表来指定具有聚合函数的新列的名称:

df1 = (df.groupby('STNAME')['CENSUS2010POP']
.agg({'avg': np.average, 'sum': np.sum}))

FutureWarning:在系列上使用dict进行聚合已弃用,并将在将来的版本中删除.agg({'avg':np.average,'sum':np.sum}(


但您的代码应该更简单:

df = pd.DataFrame({'STNAME':list('aab'),
'CENSUS2010POP':[10,20,50]})
df1 = (df.groupby('STNAME')['CENSUS2010POP']
.agg([('avg', np.average), ('sum', np.sum)]))
print (df1)
avg  sum
STNAME          
a        15   30
b        50   50

此外,如果真的需要从STNAME列创建索引,或者在熊猫(0.20+(的最后版本中已经在DataFrame中工作:

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

最新更新