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 map
si 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)