(df.set_index('STNAME').groupby(level=0)['CENSUS2010POP']
.agg({'avg': np.average, 'sum': np.sum}))
在上面的代码中,为什么必须在groupby中指定level参数,因为根据我的理解,仅当DataFrame中具有multiIndex时才需要level参数。
答案 0 :(得分:2)
不仅只有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+)的last versions中的DataFrame中工作,则可以使用
(df.set_index('STNAME').groupby('STNAME')['CENSUS2010POP']
.agg([('avg', np.average), ('sum', np.sum)]))