【发布时间】:2019-03-18 01:01:01
【问题描述】:
我想问一个关于在 pandas 中合并多索引数据框的问题,这是一个假设场景:
arrays = [['bar', 'bar', 'baz', 'baz', 'foo', 'foo', 'qux', 'qux'],
['one', 'two', 'one', 'two', 'one', 'two', 'one', 'two']]
tuples = list(zip(*arrays))
index1 = pd.MultiIndex.from_tuples(tuples, names=['first', 'second'])
index2 = pd.MultiIndex.from_tuples(tuples, names=['third', 'fourth'])
s1 = pd.DataFrame(np.random.randn(8), index=index1, columns=['s1'])
s2 = pd.DataFrame(np.random.randn(8), index=index2, columns=['s2'])
然后
s1.merge(s2, how='left', left_index=True, right_index=True)
或
s1.merge(s2, how='left', left_on=['first', 'second'], right_on=['third', 'fourth'])
会导致错误。
我是否必须在 s1/s2 上执行 reset_index() 才能完成这项工作?
【问题讨论】:
-
这是让许多 Pandas 新用户/编码人员感到沮丧的事情之一,有很多不同的方法可以做同样的事情。我喜欢这样,因为根据数据集或您为什么首先这样做,您可以采用易于编码和理解的路线,或者您可以优化更快的运行时间路线。
标签: python pandas merge multi-index