usar tutorial tablas seleccionar para notebook leer instalar hacer graficar funciones español datos con como columnas python join pandas vlookup

python - tutorial - vlookup en Pandas usando join



pandas python tutorial español pdf (3)

VLoopup en VBA es como pandas.dataframe.merge

Siempre busco tantos procedimientos para VBA en el pasado y ahora el marco de datos de python me ahorra muchísimo trabajo, lo bueno es que no necesito escribir un método de vlookup.

pandas.DataFrame.merge

>>> A >>> B lkey value rkey value 0 foo 1 0 foo 5 1 bar 2 1 bar 6 2 baz 3 2 qux 7 3 foo 4 3 bar 8 >>> A.merge(B, left_on=''lkey'', right_on=''rkey'', how=''outer'') lkey value_x rkey value_y 0 foo 1 foo 5 1 foo 4 foo 5 2 bar 2 bar 6 3 bar 2 bar 8 4 baz 3 NaN NaN 5 NaN NaN qux 7

También puede intentar lo siguiente para hacer una fusión izquierda.

import pandas as pd pd.merge(left, right, left_on = ''key'', right_on = ''key'', how=''left'')

el exterior o el izquierdo actúan como SQL, la clase incorporada de Python DataFrame tiene el método merge tomando muchos argumentos, que es muy detallado y práctico.

Tengo los siguientes 2 marcos de datos

Example1 sku loc flag 122 61 True 123 61 True 113 62 True 122 62 True 123 62 False 122 63 False 301 63 True Example2 sku dept 113 a 122 b 123 b 301 c

Quiero realizar una combinación, o unirme a una operación usando Pandas (o el operador de Python que sea mejor) para producir el siguiente marco de datos.

Example3 sku loc flag dept 122 61 True b 123 61 True b 113 62 True a 122 62 True b 123 62 False b 122 63 False b 301 63 True c Both df_Example1.join(df_Example2,lsuffix=''_ProdHier'') df_Example1.join(df_Example2,how=''outer'',lsuffix=''_ProdHier'')

No están funcionando ¿Qué estoy haciendo mal?


Realice una combinación left , esto usará la columna sku como columna para 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, 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 usar map , si establece sku como índice en su segundo df, entonces en efecto se convierte en una serie, entonces 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 siguiente manera:

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