(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)]))