首页 > 解决方案 > 如何在 Pandas 中引用由 .agg() 函数创建的列

问题描述

我创建了使用Groupby().agg()的代码,这样新的 DataFrame 具有summeancount中的值的列Total

test = df.groupby('Sector').agg({'Total': ['sum', 'mean', 'count']})

此代码已根据需要运行并产生了结果。但是当尝试使用降序对列sort_values()进行排序时。sum我遇到一个问题。

test.sort_values('sum', axis="columns", ascending = False, inplace = True)

它会给我输出: KeyError: 'sum'

我似乎找不到引用该.agg()函数创建的列的方法。

任何帮助将不胜感激。谢谢

标签: pythonpandas

解决方案


在列和第二个问题需要Total后添加列groupby,默认值是什么,所以应该删除:MultiIndexsortingindex

test = df.groupby('Sector')['Total'].agg(['sum', 'mean', 'count'])
#if use inplace=True cannot assign values
test.sort_values('sum', ascending = False, inplace = True)
print (test)
#if omitted, you need assign
test = test.sort_values('sum', ascending = False)
print (test)

或者,如果在命名聚合中需要自定义列名称:

test = df.groupby('Sector').agg(sum1=('Total','sum'),
                                avg=('Total','mean'),
                                size=('Total','count'))
test.sort_values('sum1', ascending = False, inplace = True)
print (test)

推荐阅读