I have a dictionary of DataFrames, where the keys are assumed to be meaningful:
In [32]: x = pd.DataFrame(dict(foo=[1,2,3], bar=[4,5,6])).set_index('foo')
In [33]: y = pd.DataFrame(dict(foo=[7,8,9], bar=[10,11,12])).set_index('foo')
In [34]: z = dict(x=x, y=y)
Which looks like:
In [43]: x
Out[43]:
bar
foo
1 4
2 5
3 6
In [44]: y
Out[44]:
bar
foo
7 10
8 11
9 12
Is there a nice way to get the following DataFrame:
foo bar
x 1 4
2 5
3 6
y 7 10
8 11
9 12
Method 1: Create DataFrame from Dictionary using default Constructor of pandas. Dataframe class. Method 2: Create DataFrame from Dictionary with user-defined indexes. Method 3: Create DataFrame from simple dictionary i.e dictionary with key and simple value like integer or string value.
Use from_dict(), from_records(), json_normalize() methods to convert list of dictionaries (dict) to pandas DataFrame. Dict is a type in python to hold key-value pairs. Key is used as a column name and value is used for column value when we convert dict to DataFrame.
Create dataframe with Pandas from_dict() Method If that sounds repetitious, since the regular constructor works with dictionaries, you can see from the example below that the from_dict() method supports parameters unique to dictionaries. In the code, the keys of the dictionary are columns. The row indexes are numbers.
We can create pandas dataframe by using tuples.
You can use concat
for this, and the keys of the dictionary will automatically be used for a new index level:
In [6]: z = dict(x=x, y=y)
In [7]: pd.concat(z)
Out[7]:
bar
foo
x 1 4
2 5
3 6
y 7 10
8 11
9 12
You can also give this new index level a name using the names
argument of concat
(eg names=['key']
).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With