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

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

請教根據熊貓數據幀分組并選擇最常用的值

請教根據熊貓數據幀分組并選擇最常用的值

開滿天機 2019-11-05 09:04:46
根據熊貓數據幀分組并選擇最常用的值我有一個有三個字符串列的數據框架。我知道,第三列中唯一的一個值對于前兩列的每一個組合都是有效的。要清理數據,我必須按數據幀按前兩列分組,并為每個組合選擇第三列的最常用值。我的代碼:import pandas as pdfrom scipy import stats source = pd.DataFrame({'Country' : ['USA', 'USA', 'Russia','USA'],                    'City' : ['New-York', 'New-York', 'Sankt-Petersburg', 'New-York'],                   'Short name' : ['NY','New','Spb','NY']})print source.groupby(['Country','City']).                   agg(lambda x: stats.mode(x['Short name'])[0])最后一行代碼不起作用,它寫著“鍵錯誤‘短名稱’”,如果我試圖只按City分組,那么我就得到了AssertionError。我能做些什么來解決它?
查看完整描述

3 回答

?
江戶川亂折騰

TA貢獻1851條經驗 獲得超5個贊

你可以用value_counts()要獲得一個計數系列,并獲得第一行:

import pandas as pd

source = pd.DataFrame({'Country' : ['USA', 'USA', 'Russia','USA'], 
                  'City' : ['New-York', 'New-York', 'Sankt-Petersburg', 'New-York'],
                  'Short name' : ['NY','New','Spb','NY']})source.groupby(['Country','City']).agg(lambda x:x.value_counts().index[0])



查看完整回答
反對 回復 2019-11-06
?
慕尼黑8549860

TA貢獻1818條經驗 獲得超11個贊

為agg,lambba函數將獲得Series,它沒有'Short name'屬性。


stats.mode返回兩個數組的元組,因此必須在這個元組中接受第一個數組的第一個元素。


通過這兩個簡單的更改:


source.groupby(['Country','City']).agg(lambda x: stats.mode(x)[0][0])

回報


                         Short name

Country City                       

Russia  Sankt-Petersburg        Spb

USA     New-York                 NY



查看完整回答
反對 回復 2019-11-06
  • 3 回答
  • 0 關注
  • 544 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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