Home > Enterprise >  converting a nested dictionary to Pandas DataFrame
converting a nested dictionary to Pandas DataFrame

Time:04-29

I'm trying to convert a nested dictionary to a df object.

the dictionary looks like this :

{'result': {'2011-12-01': {'A': 53, 'B': 28, 'C': 32, 'D': 0}, 
'2012-01-01': {'A': 51, 'B': 35, 'C': 49, 'D': 0},
 '2012-02-01': {'A': 63, 'B': 32, 'C': 56, 'D': 0}}}

and my goal is to have a table with the dates(second level keys) using as an index, and the A,B,C,D as columns.

date A B C D
2011-12-01 53 28 32 0
2012-01-01 51 35 49 0

I tried to use a for loop to grab the inner keys/values and append() it to a DF, but all I've got was a long DF with a date index followed by a plain index.

My failed attempts:

print(sorted(columns[0].values()))
df = pd.DataFrame(index=result['result'].keys() , columns= columns[0].keys())
for i in range(len(columns)):
    a=sorted(columns[i].items())
    df=df.append(a)
print(df.to_string())

CodePudding user response:

You can simply use:

df = pd.DataFrame(d['result']).T

Or:

df = pd.DataFrame.from_dict(d['result'], orient='index')

Output:

             A   B   C  D
2011-12-01  53  28  32  0
2012-01-01  51  35  49  0
2012-02-01  63  32  56  0
  • Related