¿Es posible fusionar solo algunas columnas? Tengo un DataFrame df1 con columnas x, y, zy df2 con columnas x, a, b, c, d, e, f, etc.
Quiero fusionar los dos DataFrames en x, pero solo quiero fusionar las columnas df2.a, df2.b, no todo el DataFrame.
El resultado sería un DataFrame con x, y, z, a, b.
Podría fusionar y luego eliminar las columnas no deseadas, pero parece que hay un método mejor.
Respuestas:
Puede fusionar el sub-DataFrame (solo con esas columnas):
fuente
list('xab')
toma cada elemento (letra) de la cadena 'xab' y lo convierte en un elemento de lista para quelist('xab')
regrese['x', 'a', 'b']
. Eso funciona si cada columna tiene una sola letra como nombre. En su caso, creo que necesita hacer df1.merge (df2 ['Unique_External_Users'], * other_arguments). ... Lo más probable es que ya lo hayas resuelto, dejando esto para los novatos, como yoDesea usar DOS corchetes, por lo que si está haciendo un tipo de acción BUSCARV:
Esto le dará todo en el df original + agregue la columna correspondiente en df2 a la que desea unirse.
fuente
Si desea eliminar la (s) columna (s) del marco de datos de destino, pero las columnas son necesarias para la combinación, puede hacer lo siguiente:
La
.drop('key1')
parte evitará que 'key1' se mantenga en el marco de datos resultante, a pesar de que se requiere unirse en primer lugar.fuente
KeyError: "['key1'] not found in axis"
Puede usar
.loc
para seleccionar las columnas específicas con todas las filas y luego extraerlas. A continuación se muestra un ejemplo:En este ejemplo, está fusionando dataframe1 y dataframe2. Ha elegido hacer una combinación exterior izquierda en 'clave'. Sin embargo, para dataframe2 ha especificado lo
.iloc
que le permite especificar las filas y columnas que desea en un formato numérico. Usando:
, selecciona todas las filas, pero[0:5]
selecciona las primeras 5 columnas. Puede usar.loc
para especificar por nombre, pero si está tratando con nombres de columna largos, entonces.iloc
puede ser mejor.fuente
.loc
hará una copia , y en un gran df que puede ser doloroso. Podría ser mejor fusionar y luego tomar inmediatamente un segmento de columna en la misma expresión.Esto es para fusionar columnas seleccionadas de dos tablas.
Si
table_1
contienet1_a,t1_b,t1_c..,id,..t1_z
columnas ytable_2
contienet2_a, t2_b, t2_c..., id,..t2_z
columnas, y solo se requieren t1_a, id, t2_a en la tabla final, entoncesfuente