Foros Python

Versión completa: Manejo de Strings en Dataframes
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
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 ifSaden 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!!!