Home >Backend Development >Python Tutorial >How to Create a Pandas DataFrame with Hierarchical Indexing from a Nested Dictionary?

How to Create a Pandas DataFrame with Hierarchical Indexing from a Nested Dictionary?

Barbara Streisand
Barbara StreisandOriginal
2024-11-30 17:25:13531browse

How to Create a Pandas DataFrame with Hierarchical Indexing from a Nested Dictionary?

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!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn