如何引用 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()函数创建的列。

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


慕哥9229398
浏览 97回答 2
2回答

炎炎设计

Total在列中添加groupby避免MultiIndex列,第二个问题需要sortingby index,默认值是什么,所以应该删除:test = df.groupby('Sector')['Total'].agg(['sum', 'mean', 'count'])#if use inplace=True cannot assign valuestest.sort_values('sum', ascending = False, inplace = True)print (test)#if omitted, you need assigntest = 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)

慕姐4208626

用于test.columns查看列名称。然后使用您在sort_values.您有多个索引列,这就是您的问题。重命名它们。test.columns = ["sum", "mean", "count"]或者使用multindexsort_values 中的列名称.sort_values(('Total', 'sum'), ascending = False, inplace = True) #without axis='columns'
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python