Convierta una string separada por comas en una array en el marco de datos PySpark

En este artículo, aprenderemos cómo convertir una string separada por comas en una array en el marco de datos pyspark.

En pyspark SQL, la función split() convierte la string separada por delimitadores en una array. Se realiza dividiendo la string en función de delimitadores como espacios, comas y apilándolos en una array. Esta función devuelve pyspark.sql.Column de tipo Array.

Sintaxis: pyspark.sql.functions.split(str, pattern, limit=-1)

Parámetro:

  • str:- La string a dividir.
  • límite: un número entero que controla el número de veces que se aplica el patrón
  • patrón: – El delimitador que se utiliza para dividir la string.

Ejemplos

Veamos algunos ejemplos para comprender el funcionamiento del código.

Ejemplo 1: trabajar con valores de string

Veamos un ejemplo de muestra para ver la función de división en acción. Para este ejemplo, hemos creado nuestro marco de datos personalizado y usamos la función de división para crear un nombre que se ponga en contacto con el nombre del estudiante. Aquí vamos a aplicar división a las columnas de formato de datos de string.

Python3

# import required modules
from pyspark.sql import SparkSession
from pyspark.sql.functions import split, col
  
# start the spark session
spark = SparkSession.builder \
         .appName('GeeksforGeeks') \
         .getOrCreate()
  
# create the dataframe
data = [("Pulkit, Dhingra","M",70),
            ("Ritika, Pandey","F",85),
            ("Kaif, Ali","M",63),
            ("Asha, Deep","F",62)
            ]
  
columns=["Name","Gender","Marks"]
df=spark.createDataFrame(data,columns)
  
# use split function 
df2 = df.select(split(col("Name"),",").alias("Name_Arr"),
                col("Gender"),col("Marks")) \
    .drop("Name")
  
df2.show()
  
# stop session
spark.stop()

Producción:

Ejemplo 2: trabajar con valores enteros

Si queremos convertir al tipo numérico, podemos usar la función cast() con la función split(). En este ejemplo, estamos usando la función cast() para construir una array de enteros, por lo que usaremos cast(ArrayType(IntegerType())) donde especifica claramente que necesitamos convertir a una array de tipo entero.

Python3

# import required modules
from pyspark.sql import SparkSession
from pyspark.sql.functions import split, col
from pyspark.sql.types import ArrayType, IntegerType
  
# start the spark session
spark = SparkSession.builder \
         .appName('GeeksforGeeks') \
         .getOrCreate()
  
# create the dataframe
data = [("Pulkit, Dhingra","M","70,85"),
            ("Ritika, Pandey","F","85,95"),
            ("Kaif, Ali","M","63,72"),
            ("Asha, Deep","F","62,92")
            ]
  
columns=["Name","Gender","Marks"]
df=spark.createDataFrame(data,columns)
df.show()
  
# use split function 
df2 = df.select(col("Name"),col("Gender"),
split(col("Marks"),",").cast(
  ArrayType(IntegerType())).alias("Marks_Arr"))
  
df2.show()
  
# stop session
spark.stop()

Producción:

Ejemplo 3: trabajar con valores enteros y de string

Puede haber una condición en la que necesitemos verificar cada columna y dividir si existe un valor de columna separado por comas. La función split() viene cargada de ventajas. Puede haber una condición en la que el separador no esté presente en una columna. La función split() maneja esta situación al crear una sola array del valor de la columna en lugar de dar una excepción. Esto puede ser útil a veces.

Python3

# If you want to convert data to numeric
# types you can cast as follows
import findspark
findspark.init('c:/spark')
  
# import required modules
from pyspark.sql import SparkSession
from pyspark.sql.functions import split, col
from pyspark.sql.types import ArrayType, IntegerType
  
def return_array(column):
        return split(col(column),",")
  
# start the spark session
spark = SparkSession.builder \
         .appName('GeeksforGeeks') \
         .getOrCreate()
  
# create the dataframe
data = [("Pulkit, Dhingra","M","70,85"),
            ("Ritika, Pandey","F","85,95"),
            ("Kaif, Ali","M","63,72"),
            ("Asha, Deep","F","62,92")
            ]
  
columns=["Name","Gender","Marks"]
df=spark.createDataFrame(data,columns)
df.show()
  
# use split function 
df2 = df.select(split(col("Name"),",").alias("Name"),
    split(col("Gender"),",").alias("Gender"),
    split(col("Marks"),",").alias("Marks_Arr"))
df2.show()
  
# stop session
spark.stop()

Producción:

Publicación traducida automáticamente

Artículo escrito por pulkit12dhingra y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *