Constructing a Pandas DataFrame from Nested Dictionary Values with Hierarchical Indexing
Consider a nested dictionary, user_dict, where the first level keys represent UserIds, the second level keys are Categories, and the third level keys are various Attributes. The goal is to construct a pandas DataFrame with a hierarchical index using the values in the third level.
To achieve this, we need to reshape the dictionary's keys into tuples representing the hierarchical index. Using pd.DataFrame.from_dict, we can create a DataFrame with the correct index structure:
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
An alternative approach involves concatenating individual DataFrames created from each dictionary entry:
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
Both methods effectively construct a DataFrame with a hierarchical index using the values from the nested dictionary's third level.
The above is the detailed content of How to Create a Pandas DataFrame with Hierarchical Indexing from a Nested Dictionary?. For more information, please follow other related articles on the PHP Chinese website!