python – 在单级MultiIndex上合并

有没有任何方法可以在单层级的MultiIndex上合并,而无需重置索引?

我有一个时间不变值的“静态”表,由ObjectID索引,我有一个时间变量字段的“动态”表,由ObjectID Date索引.我想一起加入这些表.

现在,我能想到的最好的是:

dynamic.reset_index().merge(static, left_on=['ObjectID'], right_index=True)

然而,动态表格非常大,我不想用它的索引来舍弃,以便组合这些值.

是的,由于大pandas0.14.0,现在可以使用.join将单索引的DataFrame与多索引DataFrame的级别合并.

df1.join(df2, how='inner')

The 0.14 pandas docs将此描述为等效但更多的内存效率和速度比:

merge(df1.reset_index(),
      df2.reset_index(),
      on=['index1'],
      how='inner'
     ).set_index(['index1','index2'])

该文档还提到.join不能用于在一个级别上合并两个多重索引的DataFrames,并且从上一个问题的GitHub跟踪器讨论中合并,似乎这可能不是实现的首要任务:

so I merged in the single join, see #6363; along with some docs on
how to do a multi-multi join. THat’s fairly complicated to actually
implement. and IMHO not worth the effort as it really doesn’t change
the memory usage/speed that much at all.

然而,有一个关于这个的GitHub对话,其中最近有一些开发https://github.com/pydata/pandas/issues/6360.还可以通过重新设置前面提到的和在文档中描述的索引.

翻译自:http://stackoverflow.com/questions/16650945/merge-on-single-level-of-multiindex

转载注明原文:python – 在单级MultiIndex上合并