Resumen

Como podemos usar la lógica anteriormente vista en código, usando los parámetros de Pandas

  • Importamos Pandas y Numpy
import pandas as pd
import numpy as np

Concat

  • En esta ocasión vamos a crear un DataFrame nuevo
df1 = pd.DataFrame({'A':['A0', 'A1', 'A2','A3'],
        'B':['B0', 'B1', 'B2','B3'],
	'C':['C0', 'C1', 'C2','C3'],
	'D':['D0', 'D1', 'D2','D3']})


df2 = pd.DataFrame({'A':['A4', 'A5', 'A6','A7'],
	'B':['B4', 'B5', 'B6','B7'],
	'C':['C4', 'C5', 'C6','C7'],
	'D':['D4', 'D5', 'D6','D7']})
  • Concatenar los DataFrames
pd.concat([df1,df2])
---> A  B   C   D
0   A0  B0  C0  D0
1   A1  B1  C1  D1
2   A2  B2  C2  D2
3   A3  B3  C3  D3
0   A4  B4  C4  D4
1   A5  B5  C5  D5
2   A6  B6  C6  D6
3   A7  B7  C7  D7
  • Corregir los índices
pd.concat([df1,df2], ignore_index= True)
---> A  B   C   D
0   A0  B0  C0  D0
1   A1  B1  C1  D1
2   A2  B2  C2  D2
3   A3  B3  C3  D3
4   A4  B4  C4  D4
5   A5  B5  C5  D5
6   A6  B6  C6  D6
7   A7  B7  C7  D7
  • Por axis 1
pd.concat([df1,df2], axis = 1)
---> A  B   C   D   A.1 B.1 C.1 D.1
0   A0  B0  C0  D0  A4  B4  C4  D4
1   A1  B1  C1  D1  A5  B5  C5  D5
2   A2  B2  C2  D2  A6  B6  C6  D6
3   A3  B3  C3  D3  A7  B7  C7  D7

Merge

  • Creamos DataFrame
izq = pd.DataFrame({'key' : ['k0', 'k1', 'k2','k3'],
 'A' : ['A0', 'A1', 'A2','A3'],
'B': ['B0', 'B1', 'B2','B3']})

der = pd.DataFrame({'key' : ['k0', 'k1', 'k2','k3'],
 'C' : ['C0', 'C1', 'C2','C3'],
'D': ['D0', 'D1', 'D2','D3']})
  • Unir el DataFrame Der a Izq
izq.merge(der)
---> key A  B   C   D
0   k0  A0  B0  C0  D0
1   k1  A1  B1  C1  D1
2   k2  A2  B2  C2  D2
3   k3  A3  B3  C3  D3
MERGE 2
izq = pd.DataFrame({'key' : ['k0', 'k1', 'k2','k3'],
 'A' : ['A0', 'A1', 'A2','A3'],
'B': ['B0', 'B1', 'B2','B3']})

der = pd.DataFrame({'key_2' : ['k0', 'k1', 'k2','k3'],
 'C' : ['C0', 'C1', 'C2','C3'],
'D': ['D0', 'D1', 'D2','D3']})
  • Hay diferencias entre algunas columnas, por esa razón hay que separarlos de esta manera:
izq.merge(der, left_on = 'key', right_on='key_2')
---> key A  B   key_2   C   D
0   k0  A0  B0  k0    C0  D0
1   k1  A1  B1  k1    C1  D1
2   k2  A2  B2  k2    C2  D2
3   k3  A3  B3  k3    C3  D3
MERGE 3

izq = pd.DataFrame({'key' : ['k0', 'k1', 'k2','k3'],
 'A' : ['A0', 'A1', 'A2','A3'],
'B': ['B0', 'B1', 'B2','B3']})

der = pd.DataFrame({'key_2' : ['k0', 'k1', 'k2',np.nan],
 'C' : ['C0', 'C1', 'C2','C3'],
'D': ['D0', 'D1', 'D2','D3']})
  • Si tenemos un NaNen nuestro DataFrame, pandas no lo detectará como un mach. Se soluciona con How, dando así, una preferencia.
izq.merge(der, left_on = 'key', right_on='key_2', how='left')
---> key A  B   key_2   C   D
0   k0  A0  B0  k0    C0  D0
1   k1  A1  B1  k1    C1  D1
2   k2  A2  B2  k2    C2  D2
3   k3  A3  B3  NaN  NaN  NaN

Contribución creada por: Edward Giraldo.