unir outer name inner dataframes column python pandas join merge concat

python - outer - pandas join by column name



Diferencia(s) entre merge() y concat() en pandas (4)

¿Cuál es la diferencia esencial entre pd.DataFrame.merge() y pd.concat() ?

Hasta ahora, esto es lo que encontré, por favor comente sobre cuán completo y preciso es mi comprensión:

  • .merge() solo puede usar columnas (más índices de fila) y es semánticamente adecuado para operaciones de estilo de base de datos. .concat() se puede usar con cualquier eje, usando solo índices, y ofrece la opción de agregar un índice jerárquico.

  • Por cierto, esto permite la siguiente redundancia: ambos pueden combinar dos marcos de datos utilizando los índices de filas.

  • pd.DataFrame.join() simplemente ofrece una abreviatura para un subconjunto de los casos de uso de .merge()

(Pandas es excelente para abordar un espectro muy amplio de casos de uso en el análisis de datos. Puede ser un poco desalentador explorar la documentación para descubrir cuál es la mejor manera de realizar una tarea en particular).


Actualmente estoy tratando de entender las diferencias esenciales entre pd.DataFrame.merge() y pd.concat() .

Buena pregunta. La principal diferencia:

pd.concat funciona en ambos ejes.

La otra diferencia es que pd.concat tiene pd.concat internas predeterminadas y externas únicamente, mientras que pd.DataFrame.merge() tiene uniones predeterminadas izquierdas , derechas , externas e internas .

La tercera diferencia notable es: pd.DataFrame.merge() tiene la opción de establecer los sufijos de columna al fusionar columnas con el mismo nombre, mientras que para pd.concat esto no es posible.

Con pd.concat de manera predeterminada, puede apilar filas de múltiples marcos de datos ( axis=0 ) y cuando establece el axis=1 , imita la función pd.DataFrame.merge() .

Algunos ejemplos útiles de pd.concat :

df2=pd.concat([df]*2, ignore_index=True) #double the rows of a dataframe df2=pd.concat([df, df.iloc[[0]]]) # add first row to the end df3=pd.concat([df1,df2], join=''inner'', ignore_index=True) # concat two df''s


Una diferencia de nivel muy alta es que merge() se usa para combinar dos (o más) marcos de datos sobre la base de valores de columnas comunes (también se pueden usar índices, use left_index=True y / o right_index=True ) y concat() se utiliza para agregar uno (o más) marcos de datos uno debajo del otro (o de lado, dependiendo de si la opción del axis está establecida en 0 o 1).

join() se usa para fusionar 2 marcos de datos sobre la base del índice; en lugar de usar merge() con la opción left_index=True , podemos usar join() .

Por ejemplo:

df1 = pd.DataFrame({''Key'': [''b'', ''b'', ''a'', ''c'', ''a'', ''a'', ''b''], ''data1'': range(7)}) df1: Key data1 0 b 0 1 b 1 2 a 2 3 c 3 4 a 4 5 a 5 6 b 6 df2 = pd.DataFrame({''Key'': [''a'', ''b'', ''d''], ''data2'': range(3)}) df2: Key data2 0 a 0 1 b 1 2 d 2 #Merge # The 2 dataframes are merged on the basis of values in column "Key" as it is # a common column in 2 dataframes pd.merge(df1, df2) Key data1 data2 0 b 0 1 1 b 1 1 2 b 6 1 3 a 2 0 4 a 4 0 5 a 5 0 #Concat # df2 dataframe is appended at the bottom of df1 pd.concat([df1, df2]) Key data1 data2 0 b 0 NaN 1 b 1 NaN 2 a 2 NaN 3 c 3 NaN 4 a 4 NaN 5 a 5 NaN 6 b 6 NaN 0 a Nan 0 1 b Nan 1 2 d Nan 2


por defecto:
unirse es una combinación izquierda en columna
pd.merge es una combinación interna en columnas
pd.concat es una combinación externa en fila

pd.concat:
toma argumentos Iterables. Por lo tanto, no puede tomar DataFrames directamente (use [df, df2])
Las dimensiones de DataFrame deben coincidir a lo largo del eje

Únete y pd.merge:
puede tomar argumentos de DataFrame

Haga clic para ver la imagen para comprender por qué el siguiente código hace lo mismo

df1.join(df2) pd.merge(df1, df2, left_index=True, right_index=True) pd.concat([df1, df2], axis=1)


pd.concat toma un Iterable como argumento. Por lo tanto, no puede tomar DataFrame s directamente como argumento. También las Dimension s del DataFrame deben coincidir a lo largo del eje mientras se concatena.

pd.merge puede tomar DataFrame s como argumento, y se usa para combinar dos DataFrame s con las mismas columnas o índice, lo que no se puede hacer con pd.concat ya que mostrará la columna repetida en el DataFrame.

Mientras que join puede usarse para unir dos DataFrame s con diferentes índices.