開(kāi)滿天機(jī)
2019-11-05 09:04:46
根據(jù)熊貓數(shù)據(jù)幀分組并選擇最常用的值我有一個(gè)有三個(gè)字符串列的數(shù)據(jù)框架。我知道,第三列中唯一的一個(gè)值對(duì)于前兩列的每一個(gè)組合都是有效的。要清理數(shù)據(jù),我必須按數(shù)據(jù)幀按前兩列分組,并為每個(gè)組合選擇第三列的最常用值。我的代碼: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])最后一行代碼不起作用,它寫(xiě)著“鍵錯(cuò)誤‘短名稱(chēng)’”,如果我試圖只按City分組,那么我就得到了AssertionError。我能做些什么來(lái)解決它?
3 回答

江戶川亂折騰
TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超5個(gè)贊
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])

慕尼黑8549860
TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超11個(gè)贊
為agg,lambba函數(shù)將獲得Series,它沒(méi)有'Short name'屬性。
stats.mode返回兩個(gè)數(shù)組的元組,因此必須在這個(gè)元組中接受第一個(gè)數(shù)組的第一個(gè)元素。
通過(guò)這兩個(gè)簡(jiǎn)單的更改:
source.groupby(['Country','City']).agg(lambda x: stats.mode(x)[0][0])
回報(bào)
Short name
Country City
Russia Sankt-Petersburg Spb
USA New-York NY
添加回答
舉報(bào)
0/150
提交
取消