Skip to content
Advertisement

Creating a dataframe from a dict where keys are tuples

I have the following dict, with keys as tuples:

d = {('first', 'row'): 3, ('second', 'row'): 1}

I’d like to create a dataframe with 3 columns: Col1, Col2 and Col3 which should look like this:

Col1   Col2  Col3
first  row   3
second row   4

I can’t figure out how to split the tuples other than parsing the dict pair by pair.

Advertisement

Answer

Construct a Series first, then resetting the index will give you a DataFrame:

pd.Series(d).reset_index()
Out: 
  level_0 level_1  0
0   first     row  3
1  second     row  1

You can rename columns afterwards:

df = pd.Series(d).reset_index()   
df.columns = ['Col1', 'Col2', 'Col3']   
df
Out: 
     Col1 Col2  Col3
0   first  row     3
1  second  row     1

Or in one-line, first naming the MultiIndex:

pd.Series(d).rename_axis(['Col1', 'Col2']).reset_index(name='Col3')
Out[7]: 
     Col1 Col2  Col3
0   first  row     3
1  second  row     1
User contributions licensed under: CC BY-SA
6 People found this is helpful
Advertisement