Python 这个';级别';Pandas works中groupby方法的参数?
在上面的代码中,为什么需要在groupby中指定level参数,因为据我所知,level参数仅在数据帧中有多索引时才需要 不仅Python 这个';级别';Pandas works中groupby方法的参数?,python,pandas,pandas-groupby,data-science,Python,Pandas,Pandas Groupby,Data Science,在上面的代码中,为什么需要在groupby中指定level参数,因为据我所知,level参数仅在数据帧中有多索引时才需要 不仅多索引,它也应该在索引中使用,因为只有一个级别 对于具有指定聚合列的函数,还需要传递元组列表,以指定具有聚合函数的新列的名称: (df.set_index('STNAME').groupby(level=0)['CENSUS2010POP'] .agg({'avg': np.average, 'sum': np.sum})) 未来警告:在序列上使用dict进行聚合
多索引
,它也应该在索引
中使用,因为只有一个级别
对于具有指定聚合列的函数,还需要传递元组列表,以指定具有聚合函数的新列的名称:
(df.set_index('STNAME').groupby(level=0)['CENSUS2010POP']
.agg({'avg': np.average, 'sum': np.sum}))
未来警告:在序列上使用dict进行聚合
已弃用,将在将来的版本中删除
.agg({'avg':np.average,'sum':np.sum}))
但您的代码应该更简单:
df1 = (df.groupby('STNAME')['CENSUS2010POP']
.agg({'avg': np.average, 'sum': np.sum}))
另外,如果确实需要从STNAME
列创建索引,或者已经在熊猫(0.20+)的数据帧中工作:
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
(df.set_index('STNAME').groupby('STNAME')['CENSUS2010POP']
.agg([('avg', np.average), ('sum', np.sum)]))