I have two dataframes which look like this:
>>> df1 A B 2000-01-01 1.4 1.4 2000-01-02 1.7 -1.9 2000-01-03 -0.2 -0.8 >>> df2 A B 2000-01-01 0.6 -0.3 2000-01-02 -0.4 0.6 2000-01-03 1.1 -1.0
How can I make one dataframe out of this two with hierarchical column index like below?
df1 df2 A B A B 2000-01-01 1.4 1.4 0.6 -0.3 2000-01-02 1.7 -1.9 -0.4 0.6 2000-01-03 -0.2 -0.8 1.1 -1.0
The concat() function in pandas is used to append either columns or rows from one DataFrame to another. The concat() function does all the heavy lifting of performing concatenation operations along an axis while performing optional set logic (union or intersection) of the indexes (if any) on the other axes.
Different column names are specified for merges in Pandas using the “left_on” and “right_on” parameters, instead of using only the “on” parameter. Merging dataframes with different names for the joining variable is achieved using the left_on and right_on arguments to the pandas merge function.
This is a doc example: http://pandas.pydata.org/pandas-docs/stable/merging.html#more-concatenating-with-group-keys
In [9]: df1 = pd.DataFrame(np.random.randn(3,2),columns=list('AB'),index=pd.date_range('20000101',periods=3)) In [10]: df2 = pd.DataFrame(np.random.randn(3,2),columns=list('AB'),index=pd.date_range('20000101',periods=3)) In [11]: df1 Out[11]: A B 2000-01-01 0.129994 1.189608 2000-01-02 -1.126812 1.087617 2000-01-03 -0.930070 0.253098 In [12]: df2 Out[12]: A B 2000-01-01 0.535700 -0.769533 2000-01-02 -1.698531 -0.456667 2000-01-03 0.451622 -1.500175 In [13]: pd.concat(dict(df1 = df1, df2 = df2),axis=1) Out[13]: df1 df2 A B A B 2000-01-01 0.129994 1.189608 0.535700 -0.769533 2000-01-02 -1.126812 1.087617 -1.698531 -0.456667 2000-01-03 -0.930070 0.253098 0.451622 -1.500175
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