Python 为另一个多索引数据帧连接多索引数据帧
我有两个数据帧,每个数据帧都有一个列的多索引,如下所示:Python 为另一个多索引数据帧连接多索引数据帧,python,pandas,Python,Pandas,我有两个数据帧,每个数据帧都有一个列的多索引,如下所示: d1 = {('a', 'c'):1, ('a', 'd'):1, ('b', 'c'):1, ('b', 'd'):1} d2 = {('a', 'c'):2, ('a', 'd'):2, ('b', 'c'):2, ('b', 'd'):2} df1 = pd.DataFrame ([d1, d2]) df2 = pd.DataFrame ([d2, d2]).map (lambda x: x*2) df1.columns = pd
d1 = {('a', 'c'):1, ('a', 'd'):1, ('b', 'c'):1, ('b', 'd'):1}
d2 = {('a', 'c'):2, ('a', 'd'):2, ('b', 'c'):2, ('b', 'd'):2}
df1 = pd.DataFrame ([d1, d2])
df2 = pd.DataFrame ([d2, d2]).map (lambda x: x*2)
df1.columns = pd.MultiIndex.from_tuples (df1.columns)
df2.columns = pd.MultiIndex.from_tuples (df2.columns)
In [62]: df1
Out[62]:
a b
c d c d
0 1 1 1 1
1 1 1 1 1
[2 rows x 4 columns]
In [63]: df2
Out[63]:
a b
c d c d
0 2 2 2 2
1 2 2 2 2
[2 rows x 4 columns]
我想将这两个数据帧合并在一起,以实现列上的继承人体系结构索引,其中顶层是它起源于的数据帧的名称,后跟当前的列名。就是
In [64]: merged_df.df1.a.c
Out[64]:
0 1
1 1
Name: c, dtype: int64
In [64]: merged_df.df2.a.c
Out[64]:
0 2
1 2
Name: c, dtype: int64
我如何才能做到这一点?谢谢 您不应该在帧上使用map,仅供参考(它无论如何都不存在),您可以使用
applymap
,但使用矢量化操作更有效
In [12]: df2 = pd.DataFrame ([d2, d2])**2
In [14]: df2.columns = pd.MultiIndex.from_tuples (df2.columns)
In [15]: df2
Out[15]:
a b
c d c d
0 4 4 4 4
1 4 4 4 4
[2 rows x 4 columns]
In [16]: df1
Out[16]:
a b
c d c d
0 1 1 1 1
1 2 2 2 2
[2 rows x 4 columns]
Concat在一起并使用keys参数
In [18]: concat([df1,df2],keys=['df1','df2'],axis=1)
Out[18]:
df1 df2
a b a b
c d c d c d c d
0 1 1 1 1 4 4 4 4
1 2 2 2 2 4 4 4 4
[2 rows x 8 columns]
In [19]: concat([df1,df2],keys=['df1','df2'],axis=1).df2.a.c
Out[19]:
0 4
1 4
Name: c, dtype: int64
在0.14(即将推出)中,您将希望使用它进行切分:(并完全阅读索引文档)