In [1]:
import pandas as pd
import numpy as np

from pandas import Series, DataFrame

In [2]:
df1 = DataFrame({'key':['a','b','c','f','g'],'value1':[1,2,4,54,43]})
df1


Out[2]:
key value1
0 a 1
1 b 2
2 c 4
3 f 54
4 g 43

In [3]:
df2 = DataFrame({'key':['a','c','g','e','j'],'value2':[1,4,47,7,1]})
df2


Out[3]:
key value2
0 a 1
1 c 4
2 g 47
3 e 7
4 j 1

In [4]:
#Ahora uniremos abos dataframe, como se puede aprecia en común tienen el campo key
#usaremo el metodo .merge de pandas

pd.merge(df1,df2)

#por defecto el tipo de union es inner join, usara la columna de nombre igual


Out[4]:
key value1 value2
0 a 1 1
1 c 4 4
2 g 43 47

In [5]:
pd.merge(df1,df2, on='key') #Produce el mismo resultado que la línea anterior.


Out[5]:
key value1 value2
0 a 1 1
1 c 4 4
2 g 43 47

In [6]:
pd.merge(df1,df2, on='key', how='left') #cambiando el tipo de union según teoría de conjunto, omite los valores de df2


Out[6]:
key value1 value2
0 a 1 1.0
1 b 2 NaN
2 c 4 4.0
3 f 54 NaN
4 g 43 47.0

In [7]:
pd.merge(df1,df2, on='key', how='outer') #cambiando el tipo de union según teoría de conjunto, union general


Out[7]:
key value1 value2
0 a 1.0 1.0
1 b 2.0 NaN
2 c 4.0 4.0
3 f 54.0 NaN
4 g 43.0 47.0
5 e NaN 7.0
6 j NaN 1.0

In [8]:
df3 = DataFrame({'key':['r','a','m','o','n'],'valor3':np.arange(5)})

In [9]:
df3


Out[9]:
key valor3
0 r 0
1 a 1
2 m 2
3 o 3
4 n 4

In [10]:
df4 = DataFrame({'key':['m','a','n','u','e','l'],'valor4':np.arange(6)})

In [11]:
df4


Out[11]:
key valor4
0 m 0
1 a 1
2 n 2
3 u 3
4 e 4
5 l 5

In [12]:
pd.merge(df3,df4)


Out[12]:
key valor3 valor4
0 a 1 1
1 m 2 0
2 n 4 2

In [13]:
dfA = DataFrame({'lk':['a','b','e','g','i'],'value':np.arange(5)})

dfA


Out[13]:
lk value
0 a 0
1 b 1
2 e 2
3 g 3
4 i 4

In [14]:
dfB = DataFrame({'rk':['a','e','i','o','u'],'value':np.arange(5)+3})

dfB


Out[14]:
rk value
0 a 3
1 e 4
2 i 5
3 o 6
4 u 7

In [15]:
dfA.merge(dfB, left_on='lk', right_on='rk', how='inner') #Unión de dos df llaves diferentes


Out[15]:
lk value_x rk value_y
0 a 0 a 3
1 e 2 e 4
2 i 4 i 5

In [16]:
pd.merge(dfA, dfB, left_on='lk', right_on='rk',how='outer')


Out[16]:
lk value_x rk value_y
0 a 0.0 a 3.0
1 b 1.0 NaN NaN
2 e 2.0 e 4.0
3 g 3.0 NaN NaN
4 i 4.0 i 5.0
5 NaN NaN o 6.0
6 NaN NaN u 7.0