Reputation: 53
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
Instead of how pandas reads it:
does my dictionary data structure need to be changed or is this something that can be implemented in pandas (i.e. pandas.melt)?
Upvotes: 0
Views: 59
Reputation: 447
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
Upvotes: 3
Reputation: 88276
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
Upvotes: 3