首頁 > 後端開發 > Python教學 > 如何從具有分層索引的嵌套字典有效建立 Pandas DataFrame?

如何從具有分層索引的嵌套字典有效建立 Pandas DataFrame?

DDD
發布: 2024-12-01 09:27:11
原創
785 人瀏覽過

How to Efficiently Construct a Pandas DataFrame from a Nested Dictionary with a Hierarchical Index?

從巢狀字典建構Pandas DataFrame

使用巢狀字典時,將資料轉換為pandas DataFrame 可能具有挑戰性一種與所需結構保持一致的方式。特別是,從字典最深層提取資料作為系列可能會很麻煩。

假設您有一個結構如下的字典:

  • 等級1:UserId(長整型)
  • 第2 層:類別(字串)
  • 第 3等級:什錦屬性(浮點型、整數型等)

目標是使用字典第三層的資料建立具有分層索引的 DataFrame。

使用a MultiIndex

pandas MultiIndex 是在 DataFrame 中表示分層資料的便利方法。若要從巢狀字典建立 MultiIndex,請將鍵重塑為與多索引值對應的元組。

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')
登入後複製

此方法將建立一個具有分層索引的 DataFrame,其中第一個包含 UserIds 和第二級包含類別。第三層的資料現在被組織成系列,可以使用 UserId 和 Category 作為索引進行存取。

使用串聯的替代方法

建構 DataFrame 的另一種方法是透過連接元件資料幀。

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)
登入後複製

此方法迭代字典,建立一個 DataFrame對於每個 user_id 和類別組合。然後將產生的資料幀垂直連接並使用鍵作為分層索​​引進行連接。

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

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