亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何引用 Pandas 中 .agg() 函數創建的列

如何引用 Pandas 中 .agg() 函數創建的列

慕哥9229398 2024-01-24 16:17:34
我創建了使用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()函數創建的列。任何幫助將不勝感激。謝謝
查看完整描述

2 回答

?
炎炎設計

TA貢獻1808條經驗 獲得超4個贊

Total在列中添加groupby避免MultiIndex列,第二個問題需要sortingby 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)


查看完整回答
反對 回復 2024-01-24
?
慕姐4208626

TA貢獻1852條經驗 獲得超7個贊

用于test.columns查看列名稱。然后使用您在sort_values.

您有多個索引列,這就是您的問題。重命名它們。

test.columns = ["sum", "mean", "count"]

或者使用multindexsort_values 中的列名稱

.sort_values(('Total', 'sum'), ascending = False, inplace = True) #without axis='columns'



查看完整回答
反對 回復 2024-01-24
  • 2 回答
  • 0 關注
  • 162 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號