Pandas: concatenar dataframe y mantener índices duplicados

Tengo dos marcos de datos que me gustaría concatenar en columnas (eje = 1) con una combinación interna. Uno de los marcos de datos tiene algunos índices duplicados, pero las filas no son duplicados, y no quiero perder los datos de esos:

df1 = pd.DataFrame([{'a':1,'b':2},{'a':1,'b':3},{'a':2,'b':4}], columns = ['a','b']).set_index('a') df2 = pd.DataFrame([{'a':1,'c':5},{'a':2,'c':6}],columns = ['a','c']).set_index('a') >>> df1 b a 1 2 1 3 2 4 8 9 >>> df2 c a 1 5 2 6 

El comportamiento predeterminado de concat es llenar los valores faltantes con NaNs:

 >>> pd.concat([df1,df2]) bc a 1 2 NaN 1 3 NaN 2 4 NaN 1 NaN 5 2 NaN 6 

Quiero mantener los índices duplicados de df1 y llenarlos con valores duplicados de df2, pero en pandas 0.13.1 una combinación interna en las columnas produce un error. En versiones más recientes de pandas concat hace lo que quiero:

 >>> pd.concat([df1, df2], axis=1, join='inner') bc a 1 2 5 1 3 5 2 4 6 

¿Cuál es la mejor manera de lograr el resultado que quiero? ¿Hay una solución groupby? O tal vez no debería estar usando concat en absoluto?

Puede realizar una combinación y configurar los parámetros para utilizar el índice de las lhs y rhs:

 In [4]: df1.merge(df2, left_index=True, right_index=True) Out[4]: bc a 1 2 5 1 3 5 2 4 6 [3 rows x 2 columns] 

Concat debería haber funcionado, funcionó para mí:

 In [5]: pd.concat([df1,df2], join='inner', axis=1) Out[5]: bc a 1 2 5 1 3 5 2 4 6 [3 rows x 2 columns]