Merge Dataframe
abril 17, 2015
Merge de dataframes¶
La función merge es usada para combinar dataframe con una o mas columnas en común.
Merge de dos dataframe por una columna¶
import pandas as pd
Se construyen dos dataframe a partir de una columna en común
df_1 = pd.DataFrame([[1,2,3], [2,5,4],[4,2,3]], columns=['a', 'b', 'c'])
df_2 = pd.DataFrame([[3,5,1], [1,1,4],[2,6,3]], columns=['a', 'd', 'e'])
Ahora, se combinan a partir de esta columna
df_merge = pd.merge(df_1, df_2, on='a')
print df_merge
Este merge toma solo las filas cuyos valores de a se encuentran en ambos dataframe, si se quiere considerar todos los valores de la columna en común se usa el argumento how = 'outer'. Los valores de las columas cuyo dato no es común en a se llena con NaN.
df_merge = pd.merge(df_1, df_2, on='a', how='outer')
print df_merge
Para tomar todos los valores de la columna en común de uno de los dataframe, se usan en el argumento how los métodos 'left' o 'right', para tomar todos los valores del primer o del segundo dataframe respectivamente.
df_merge = pd.merge(df_1, df_2, on='a', how='left')
print df_merge
df_merge = pd.merge(df_1, df_2, on='a', how='right')
print df_merge
Merge de dos dataframe que tienen varias columnas en común¶
Al realizar un merge de dos dataframe con varias columnas en común, que no son usadas como columna de merge, estas se renombran automáticamente, de forma que en el dataframe resultante no hay columnas con igual nombre.
df_1 = pd.DataFrame([[1,2,3], [2,5,4],[4,2,3]], columns=['a', 'b', 'c'])
df_2 = pd.DataFrame([[3,5,1], [1,1,4],[2,6,3]], columns=['a', 'd', 'c'])
df_merge = pd.merge(df_1, df_2, on='c')
print df_merge
Orden dataframe¶
El atributo sort organiza el dataframe de forma lexicográfica.
df_merge = pd.merge(df_1, df_2, on='c', sort=True, how='outer')
print df_merge
Merge de dos dataframe por dos columnas¶
Para realizar un merge con dos columnas basta agregar en el argumento on una lista con los nombres de las columnas en común.
df_1 = pd.DataFrame([[1,2,5], [2,5,4],[4,2,3]], columns=['a', 'b', 'c'])
print df_1
df_2 = pd.DataFrame([[3,5,1], [2,1,4],[2,6,3]], columns=['a', 'd', 'c'])
print df_2
df_merge = pd.merge(df_1, df_2, on=['c', 'a'])
print df_merge
df_merge = pd.merge(df_1, df_2, on=['c', 'a'], how='outer')
print df_merge
0 comments