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
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
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
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
NaN
en 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.
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?