10

I have a dic like this:

{1 : {'tp': 26, 'fp': 112},
2 : {'tp': 26, 'fp': 91},
3 : {'tp': 23, 'fp': 74}}

and I would like to convert in into a dataframe like this:

t tp fp
1 26  112
2 26  91
3 23  74

Does anybody know how?

2 Answers 2

22

Try DataFrame.from_dict() and with keyword argument orient as 'index' -

Example -

In [20]: d = {1 : {'tp': 26, 'fp': 112},
   ....: 2 : {'tp': 26, 'fp': 91},
   ....: 3 : {'tp': 23, 'fp': 74}}

In [24]: df =pd.DataFrame.from_dict(d,orient='index')

In [25]: df
Out[25]:
   tp   fp
1  26  112
2  26   91
3  23   74

If you also want to set the column name for index column , use - df.index.name , Example -

In [30]: df.index.name = 't'

In [31]: df
Out[31]:
   tp   fp
t
1  26  112
2  26   91
3  23   74
Sign up to request clarification or add additional context in comments.

Comments

4

I just wanted to note (as this is one of the top results for converting from a nested dictionary to a pandas dataframe) that there are other ways of nesting dictionaries that can be also be converted to a dataframe (e.g. nesting via columns).

e.g. the following nested dictionary

patients = {"Name":{"0":"John","1":"Nick","2":"Ali","3":"Joseph"},
            "Gender":{"0":"Male","1":"Male","2":"Female","3":"Male"},
            "Nationality":{"0":"UK","1":"French","2":"USA","3":"Brazil"},
            "Age" :{"0":10,"1":25,"2":35,"3":29}}

can be converted to a pandas dataframe using orient='columns'

df_patients = pd.DataFrame.from_dict(patients, orient='columns')

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.