Supongamos que tengo dos DataFrames así:
left = pd.DataFrame({'key1': ['foo', 'bar'], 'lval': [1, 2]})
right = pd.DataFrame({'key2': ['foo', 'bar'], 'rval': [4, 5]})
Quiero fusionarlos, así que intento algo como esto:
pd.merge(left, right, left_on='key1', right_on='key2')
Y estoy feliz
key1 lval key2 rval
0 foo 1 foo 4
1 bar 2 bar 5
Pero estoy tratando de usar el método de unión, que me han hecho creer que es bastante similar.
left.join(right, on=['key1', 'key2'])
Y entiendo esto:
//anaconda/lib/python2.7/site-packages/pandas/tools/merge.pyc in _validate_specification(self)
406 if self.right_index:
407 if not ((len(self.left_on) == self.right.index.nlevels)):
--> 408 raise AssertionError()
409 self.right_on = [None] * n
410 elif self.right_on is not None:
AssertionError:
¿Qué me estoy perdiendo?
onopción) con los otheríndices de 's. Recuerde, índices para unirse. Mientras que merge () es un método más genérico.
mergeune columnas delefta columnas deright, que es lo que desea, perojoin(... on=[...])une columnas deleftclaves de índice deright, que no es lo que desea. Vea mi respuesta a continuación para más detalles.