首頁 > 後端開發 > Python教學 > 如何從具有分層資料的嵌套字典高效創建 Pandas DataFrame?

如何從具有分層資料的嵌套字典高效創建 Pandas DataFrame?

Linda Hamilton
發布: 2024-12-14 10:58:12
原創
542 人瀏覽過

How Can I Efficiently Create a Pandas DataFrame from a Nested Dictionary with Hierarchical Data?

從巢狀字典項目建構Pandas DataFrames

給定一個嵌套字典,其結構以UserId 作為頂層,Categories 作為第二層level,以及各種屬性作為第三層,目標是建立一個具有分層索引的pandas DataFrame。每個 UserID 應顯示為索引值,而類別和屬性值則會形成列名稱。

從此類字典建構 DataFrame 的傳統嘗試可能會導致索引和列分配不正確。要解決此問題,請考慮以下方法:

1.重塑字典:

一種解決方案是將字典重塑為一種格式,其中鍵是表示所需MultiIndex 的元組。這允許將 pd.DataFrame.from_dict 與 orient='index':

user_dict = {
    12: {'Category 1': {'att_1': 1, 'att_2': 'whatever'},
         'Category 2': {'att_1': 23, 'att_2': 'another'}},
    15: {'Category 1': {'att_1': 10, 'att_2': 'foo'},
         'Category 2': {'att_1': 30, 'att_2': 'bar'}}
}

df = pd.DataFrame.from_dict({(i,j): user_dict[i][j] 
                           for i in user_dict.keys() 
                           for j in user_dict[i].keys()},
                       orient='index')
登入後複製

2 一起使用。連接資料幀:

或者,可以透過為每個類別和使用者建立單獨的資料幀,然後連接它們來建立資料幀:

user_ids = []
frames = []

for user_id, d in user_dict.iteritems():
    user_ids.append(user_id)
    frames.append(pd.DataFrame.from_dict(d, orient='index'))

df = pd.concat(frames, keys=user_ids)
登入後複製

兩種方法都會產生具有所需資料的資料幀分層索引和列結構:

               att_1     att_2
12 Category 1      1  whatever
   Category 2     23   another
15 Category 1     10       foo
   Category 2     30       bar
登入後複製

以上是如何從具有分層資料的嵌套字典高效創建 Pandas DataFrame?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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