nueva insertar filtrar eliminar datos data crear columna agregar python python-3.x pandas join

python - insertar - pandas: fusionar(unir) dos marcos de datos en varias columnas



insertar columna en pandas (3)

Estoy tratando de unir dos marcos de datos de pandas usando dos columnas:

new_df = pd.merge(A_df, B_df, how=''left'', left_on=''[A_c1,c2]'', right_on = ''[B_c1,c2]'')

pero recibí el siguiente error:

pandas/index.pyx in pandas.index.IndexEngine.get_loc (pandas/index.c:4164)() pandas/index.pyx in pandas.index.IndexEngine.get_loc (pandas/index.c:4028)() pandas/src/hashtable_class_helper.pxi in pandas.hashtable.PyObjectHashTable.get_item (pandas/hashtable.c:13166)() pandas/src/hashtable_class_helper.pxi in pandas.hashtable.PyObjectHashTable.get_item (pandas/hashtable.c:13120)() KeyError: ''[B_1, c2]''

¿Alguna idea de cuál debería ser la forma correcta de hacer esto? ¡Gracias!


El problema aquí es que al usar los apóstrofos, está configurando el valor que se pasa para que sea una cadena, cuando, de hecho, como dijo @Shijo en la documentación, ¡la función espera una etiqueta o lista, pero no una cadena! Si la lista contiene cada uno de los nombres de las columnas que los seres pasaron para el marco de datos izquierdo y derecho, entonces cada nombre de columna debe estar individualmente dentro de los apóstrofes. Con lo dicho, podemos entender por qué esto es inccorect:

new_df = pd.merge(A_df, B_df, how=''left'', left_on=''[A_c1,c2]'', right_on = ''[B_c1,c2]'')

Y esta es la forma correcta de usar la función:

new_df = pd.merge(A_df, B_df, how=''left'', left_on=[''A_c1'',''c2''], right_on = [''B_c1'',''c2''])


Otra forma de hacerlo: new_df = A_df.merge(B_df, left_on=[''A_c1'',''c2''], right_on = [''B_c1'',''c2''], how=''left'')


Prueba esto

new_df = pd.merge(A_df, B_df, how=''left'', left_on=[''A_c1'',''c2''], right_on = [''B_c1'',''c2''])

http://pandas.pydata.org/pandas-docs/version/0.19.1/generated/pandas.DataFrame.merge.html

left_on: etiqueta o lista, o nombres de campo tipo matriz para unirse en el DataFrame izquierdo. Puede ser un vector o una lista de vectores de la longitud del DataFrame para usar un vector particular como clave de unión en lugar de columnas

right_on: etiqueta o lista, o nombres de campo similares a una matriz para unir en el DataFrame derecho o vector / lista de vectores por left_on docs