Coolio
Coolio

Reputation: 53

Transform Pandas Dataset into its Values and Column Value

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)?

Upvotes: 0

Views: 59

Answers (2)

Artur
Artur

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

yatu
yatu

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

Related Questions