Saltar al contenido

vlookup en Pandas usando join

Te damos la bienvenida a nuestra página, en este sitio encontrarás la solucíon a lo que estabas buscando.

Solución:

realizar un left combinar, esto usará sku columna como la columna a la que unirse:

In [26]:

df.merge(df1, on='sku', how='left')
Out[26]:
   sku  loc   flag dept
0  122   61   True    b
1  122   62   True    b
2  122   63  False    b
3  123   61   True    b
4  123   62  False    b
5  113   62   True    a
6  301   63   True    c

Si sku es de hecho su índice entonces haga esto:

In [28]:

df.merge(df1, left_index=True, right_index=True, how='left')
Out[28]:
     loc   flag dept
sku                 
113   62   True    a
122   61   True    b
122   62   True    b
122   63  False    b
123   61   True    b
123   62  False    b
301   63   True    c

Otro método es utilizar mapsi estableces sku como el índice en su segundo df, por lo que en efecto se convierte en una serie, luego el código se simplifica a esto:

In [19]:

df['dept']=df.sku.map(df1.dept)
df
Out[19]:
   sku  loc   flag dept
0  122   61   True    b
1  123   61   True    b
2  113   62   True    a
3  122   62   True    b
4  123   62  False    b
5  122   63  False    b
6  301   63   True    c

Una aplicación más genérica sería usar apply y lambda como sigue:

dict1 = 113:'a',
         122:'b',
         123:'b',
         301:'c'

df = pd.DataFrame([['1', 113],
                   ['2', 113],
                   ['3', 301],
                   ['4', 122],
                   ['5', 113]], columns=['num', 'num_letter'])

Agregar como una nueva columna de marco de datos

 **df['letter'] = df['num_letter'].apply(lambda x: dict1[x])**

  num  num_letter letter
0   1         113      a
1   2         113      a
2   3         301      c
3   4         122      b
4   5         113      a

O reemplace la columna existente (‘num_letter’)

 **df['num_letter'] = df['num_letter'].apply(lambda x: dict1[x])**

  num num_letter
0   1          a
1   2          a
2   3          c
3   4          b
4   5          a

Calificaciones y reseñas

Puedes añadir valor a nuestro contenido contribuyendo tu experiencia en las observaciones.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *