python - 如何在 Pandas 中引用由 .agg() 函数创建的列
问题描述
我创建了使用Groupby()
和.agg()
的代码,这样新的 DataFrame 具有sum
、mean
和count
中的值的列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()
函数创建的列的方法。
任何帮助将不胜感激。谢谢
解决方案
在列和第二个问题需要Total
后添加列groupby
,默认值是什么,所以应该删除:MultiIndex
sorting
index
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)
推荐阅读
- python - Scikitlearn PCA 计算不正确的最后一行 y 值
- ios - 如何在 swift iOS 中使用非 UI react-native 模块
- android - 即使添加了 notifydata,问题仍然存在
- javascript - 如何从我的 html 文件访问我的 JavaScript 类?
- java - 消息参数没有改变循环执行的次数
- c# - 进程终止时如何获得进程运行时
- javascript - javascript onblur() 重置
- python - 平均一个数据框并添加一个新列 python pandas
- html - 在表格行中包含较大的文本
- javascript - TypeORM 通过 .env 配置禁用日志记录