首頁 > 後端開發 > Python教學 > 如何有效率地找到 Pandas DataFrame 組中最常見的值?

如何有效率地找到 Pandas DataFrame 組中最常見的值?

Linda Hamilton
發布: 2024-11-29 11:32:15
原創
248 人瀏覽過

How to Efficiently Find the Most Common Value in a Pandas DataFrame Group?

按pandas DataFrame 分組並選擇最常見的值

問題


假設您有一個包含多個字串列的資料框。前兩列的每種組合在第三列中只能有一個有效值。您需要透過按前兩列對資料框進行分組並為每個組合選擇第三列的最常見值來一致地清理資料。

以下程式碼示範了嘗試實現此目的:


import pandas as pd<br>from scipy import stats<p>source = pd.DataFrame({</p><pre class="brush:php;toolbar:false">'Country': ['USA', 'USA', 'Russia', 'USA'], 
'City': ['New-York', 'New-York', 'Sankt-Petersburg', 'New-York'],
'Short name': ['NY', 'New', 'Spb', 'NY']})
登入後複製

source.groupby(['國家','城市']).agg(lambda x: stats.mode(x['簡稱'])[0])

但是,最後一行程式碼失敗並出現KeyError。及更高版本,請使用以下程式碼:

source.groupby(['Country','City'])['Short name'].agg(pd.Series.mode)<p><br></p><p>此程式碼使用Pandas 0.16 中引入的pd.Series.mode函數來找出最常見的值</p><br><br><h4>處理多種模式的替代方案</h4><br><p>Series.mode 函數可以有效地處理具有多種模式的情況:<br></p>
登入後複製
  • 如果有多種模式,則傳回系列包含所有模式。種模式單獨設定一行,請使用GroupBy.apply(pd.Series.mode)GroupBy.agg(lambda x: pd.Series.mode(x)[0]).


要考慮的替代方案


雖然您可以使用Python 中的stats.mode,但它不能很好地處理多種模式,並且可能會引發統計錯誤

以上是如何有效率地找到 Pandas DataFrame 組中最常見的值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板