0

I Have a dictionary that I want to transform into a pandas dataframe with two columns (value and column name).

mydict = {'government agency': ['FBI', 'CIA','NSA'], 'international organization': ['EU', 'NATO', 'World Bank'], 'company': ['Amazon', 'Google', 'Microsoft']}

mydict=pd.DataFrame(mydict)

I want the table to be formatted like so

enter image description here

Instead of how pandas reads it:

enter image description here

does my dictionary data structure need to be changed or is this something that can be implemented in pandas (i.e. pandas.melt)?

Coolio
  • 53
  • 7
  • Hi @coolio don' forget you can upvote and accept answers, see [What should I do when someone answers my question?](https://stackoverflow.com/help/someone-answers), thanks :) – yatu Aug 22 '19 at 13:56

2 Answers2

3

Build the dataframe and use melt:

pd.DataFrame(mydict).melt(var_name='Column')

                  Column             value
0           government agency         FBI
1           government agency         CIA
2           government agency         NSA
3  international organization          EU
4  international organization        NATO
5  international organization  World Bank
6                     company      Amazon
7                     company      Google
8                     company   Microsoft
yatu
  • 80,714
  • 11
  • 64
  • 111
3

Here's a one-liner:

import pandas

mydict = {'government agency': ['FBI', 'CIA','NSA'], 'international organization': ['EU', 'NATO', 'World Bank'], 'company': ['Amazon', 'Google', 'Microsoft']}
df = pandas.DataFrame(data=[(k,v) for k in mydict for v in mydict[k]], columns=["value", "column"])

Output:

                        value      column
0                     company      Amazon
1                     company      Google
2                     company   Microsoft
3           government agency         FBI
4           government agency         CIA
5           government agency         NSA
6  international organization          EU
7  international organization        NATO
8  international organization  World Bank
Artur
  • 397
  • 1
  • 8