Hola todos.
La consulta es:
Tengo una columna del dataframe con datos de tipo string y quiero sacar de esa columna un substring que cumpla determinada condición y colocarlo en una columna nueva.
Ejemplo:
Columnas A B (columna nueva)
datos el auto verde (acá tendrìa que figurar solo el color)
datos1 la moto azul (acá tendrìa que figurar solo el color)
datos 2 celeste es el cielo (acá tendrìa que figurar solo el color)
Espero haber sido claro, para que me puedan ayudar.
Muchas Gracias.
sds
Hola, bienvenido.
Creá una función obtener_color() que reciba como argumento un valor de la columna A y devuelva el valor que iría a la columna B (seguramente tendrás que usar
métodos de las cadenas). Luego, podés hacer:
Código:
df["B"] = df["A"].apply(obtener_color)
Saludos
(29-05-2022, 11:47 PM)Francisco escribió: [ -> ]Hola, bienvenido.
Creá una función obtener_color() que reciba como argumento un valor de la columna A y devuelva el valor que iría a la columna B (seguramente tendrás que usar métodos de las cadenas). Luego, podés hacer:
Código:
df["B"] = df["A"].apply(obtener_color)
Saludos
Francisco
Muchas Gracias!!!
Hoy lo voy a probar, Muchas Gracias por la respuesta.
Hola
Estoy ahora frente a un error: Sigo buscando hacer una función que me permita extraer texto de un string que tengo en una columna del dataframe para ponerlo en una columna nueva del dataframe.
quiero hacer este if
en la función)
if df['Nombre'].str.contains('Elite'): la columna a extraer la info['Nombre'] dice algo asì
print('Elite') 'xxxxxxxxxxxxx Elite xxxxxxxxxxx'
elif df['Nombre'].str.contains('Noble'):
print('Noble')
else:
print('Otra')
Y el error que me da es el siguiente:
The truth value of a series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
En definitiva a grandes rasgos para extraer la info, me parece que debo:
iterar con un for loop
dentro de ese for el if anterior
todo esto dentro de una funcion para luego usarla con un apply
Estoy mas o menos en lo correcto?
Muchas Gracias.
Hola.
Es más sencillo. La función recibe como argumento el valor de df["Nombre"] y retorna la información extraída. El bucle for lo hace automáticamente el método apply(). Te pongo un ejemplo:
Código:
>>> import pandas as pd
>>> df = pd.DataFrame(["xxx Hola xxx", "xxx Mundo xxx", "xxx Python xxx"])
>>> def extraer(cadena):
... return cadena[4:-4]
...
>>> df[0]
0 xxx Hola xxx
1 xxx Mundo xxx
2 xxx Python xxx
Name: 0, dtype: object
>>> df[0].apply(extraer)
0 Hola
1 Mundo
2 Python
Name: 0, dtype: object
En este ejemplo en la función usé
slicing para extraer la cadena en medio de las tres "x", pero podés usar el método que vos quieras.
Saludos
(30-05-2022, 10:43 PM)Francisco escribió: [ -> ]Hola.
Es más sencillo. La función recibe como argumento el valor de df["Nombre"] y retorna la información extraída. El bucle for lo hace automáticamente el método apply(). Te pongo un ejemplo:
Código:
>>> import pandas as pd
>>> df = pd.DataFrame(["xxx Hola xxx", "xxx Mundo xxx", "xxx Python xxx"])
>>> def extraer(cadena):
... return cadena[4:-4]
...
>>> df[0]
0 xxx Hola xxx
1 xxx Mundo xxx
2 xxx Python xxx
Name: 0, dtype: object
>>> df[0].apply(extraer)
0 Hola
1 Mundo
2 Python
Name: 0, dtype: object
En este ejemplo en la función usé slicing para extraer la cadena en medio de las tres "x", pero podés usar el método que vos quieras.
Saludos
Hola, Francisco
Muchas Gracias por tu respuesta!!!