使用分層索引從巢狀字典值建構Pandas DataFrame
考慮一個嵌套字典值建構Pandas DataFrame
考慮一個巢狀字典鍵代表UserId,第二級鍵是類別,第三級鍵是各種屬性。目標是使用第三級中的值來建立具有分層索引的 pandas DataFrame。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'}}} 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') att_1 att_2 12 Category 1 1 whatever Category 2 23 another 15 Category 1 10 foo Category 2 30 bar
為了實現此目標,我們需要將字典的鍵重塑為表示分層索引的元組。使用pd.DataFrame.from_dict,我們可以建立具有正確索引結構的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')) 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
另一種方法涉及連接從每個字典條目創建的各個DataFrame:
兩者方法使用巢狀字典第三層中的值有效地建構具有分層索引的DataFrame。以上是如何從嵌套字典建立具有分層索引的 Pandas DataFrame?的詳細內容。更多資訊請關注PHP中文網其他相關文章!