简体   繁体   English

如何获得两个多索引数据帧的并集?

[英]How to get the union of two MultiIndex DataFrames?

How do I merge two MultiIndexed DataFrames?如何合并两个多索引数据帧?

For example, let's say I have:例如,假设我有:

index1 = pd.MultiIndex.from_tuples([('2010-01-01', 'Jim'),
                                    ('2010-01-01', 'Mike'), 
                                    ('2010-01-02', 'Sam')])
index2 = pd.MultiIndex.from_tuples([('2010-01-02', 'Jim'), 
                                    ('2010-01-02', 'Sam'), 
                                    ('2010-01-03', 'Joe')])
df1 = pd.DataFrame([[7,0,7],[4,3,2],[6,2,6]], 
                   index=index1, columns=['a', 'b', 'c'])
df2 = pd.DataFrame([[4,2,0],[8,8,4],[5,5,3]], 
                   index=index2, columns=['a', 'b', 'c'])

This results in:这导致:

>> df1
                  a  b  c
2010-01-01  Jim   7  0  7
            Mike  4  3  2
2010-01-02  Sam   6  2  6

>> df2
                  a  b  c
2010-01-02  Jim   4  2  0
            Sam   8  8  4
2010-01-03  Joe   5  5  3

I want to merge df1 and df2 to produce:我想合并df1df2以产生:

>> df3
                    a1  b1  c1  a2  b2  c2
2010-01-01  Jim     7   0   7   NaN NaN NaN
            Mike    4   3   2   NaN NaN NaN
2010-01-02  Jim     NaN NaN NaN 4   2   0
            Sam     6   2   6   8   8   4
2010-01-03  Joe     NaN NaN NaN 5   5   3

I'm struggling to find a good way to do this.我正在努力寻找一个好的方法来做到这一点。 Any suggestions?有什么建议?

Try:尝试:

df3 = df1.join(df2, how='outer', lsuffix='1', rsuffix='2')

Or或者

df3 = pd.merge(df1, df2, how='outer', left_index=True, right_index=True)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM