Te sugerimos que pruebes esta solución en un ambiente controlado antes de pasarlo a producción, un saludo.
Solución:
Puedes usar la función expr
>>> from pyspark.sql.functions import substring, length, col, expr
>>> df = df.withColumn("flower",expr("substring(name, 1, length(name)-5)"))
>>> df.show()
+--------------+----+---------+
| name|year| flower|
+--------------+----+---------+
| rose_2012|2012| rose|
| jasmine_2013|2013| jasmine|
| lily_2014|2014| lily|
| daffodil_2017|2017| daffodil|
|sunflower_2016|2016|sunflower|
+--------------+----+---------+
Puedes usar split
función. este código hace lo que quieres:
import pyspark.sql.functions as f
newDF = df.withColumn("year", f.split(df['name'], '_')[1]).
withColumn("flower", f.split(df['name'], '_')[0])
newDF.show()
+--------------+----+---------+
| name|year| flower|
+--------------+----+---------+
| rose_2012|2012| rose|
| jasmine_2013|2013| jasmine|
| lily_2014|2014| lily|
| daffodil_2017|2017| daffodil|
|sunflower_2016|2016|sunflower|
+--------------+----+---------+
En este caso, dado que queremos extraer caracteres alfabéticos, REGEX también funcionará.
from pyspark.sql.functions import regexp_extract
df = df.withColumn("flower",regexp_extract(df['name'], '[a-zA-Z]+',0))
df.show()
+--------------+----+---------+
| name|year| flower|
+--------------+----+---------+
| rose_2012|2012| rose|
| jasmine_2013|2013| jasmine|
| lily_2014|2014| lily|
| daffodil_2017|2017| daffodil|
|sunflower_2016|2016|sunflower|
+--------------+----+---------+
Sección de Reseñas y Valoraciones
Tienes la posibilidad mostrar esta reseña si si solucionó tu problema.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)