Convertir una columna de PySpark DataFrame en una lista de Python

En este artículo, discutiremos cómo convertir la columna del marco de datos de Pyspark en una lista de Python.

Creando dataframe para demostración:

Python3

# importing module
import pyspark
 
# importing sparksession from pyspark.sql module
from pyspark.sql import SparkSession
 
# creating sparksession and giving an app name
spark = SparkSession.builder.appName('sparkdf').getOrCreate()
 
# list  of students  data
data = [["1", "sravan", "vignan", 67, 89],
        ["2", "ojaswi", "vvit", 78, 89],
        ["3", "rohith", "vvit", 100, 80],
        ["4", "sridevi", "vignan", 78, 80],
        ["1", "sravan", "vignan", 89, 98],
        ["5", "gnanesh", "iit", 94, 98]]
 
# specify column names
columns = ['student ID', 'student NAME',
           'college', 'subject1', 'subject2']
 
# creating a dataframe from the lists of data
dataframe = spark.createDataFrame(data, columns)
 
# display dataframe
dataframe.show()

Producción:

Método 1: Usando flatMap()

Este método toma la columna seleccionada como entrada que usa rdd y la convierte en la lista.

Sintaxis: dataframe.select(‘Column_Name’).rdd.flatMap(lambda x: x).collect()

dónde,

  • el marco de datos es el marco de datos pyspark
  • Column_Name es la columna que se convertirá en la lista
  • flatMap() es el método disponible en rdd que toma una expresión lambda como parámetro y convierte la columna en una lista
  • collect() se utiliza para recopilar los datos en las columnas

Ejemplo 1: código de Python para convertir una columna particular en una lista usando flatMap

Python3

# convert student Name to list using
# flatMap
print(dataframe.select('student Name').
      rdd.flatMap(lambda x: x).collect())
 
# convert student ID to list using
# flatMap
print(dataframe.select('student ID').
      rdd.flatMap(lambda x: x).collect())

Producción:

[‘sravan’, ‘ojaswi’, ‘rohith’, ‘sridevi’, ‘sravan’, ‘gnanesh’]

[‘1’, ‘2’, ‘3’, ‘4’, ‘1’, ‘5’]

Ejemplo 2: convertir varias columnas en una lista.

Python3

# convert multiple columns  to list using flatMap
print(dataframe.select(['student Name',
                        'student Name',
                        'college']).
      rdd.flatMap(lambda x: x).collect())

Producción: 

[‘sravan’, ‘sravan’, ‘vignan’, ‘ojaswi’, ‘ojaswi’, ‘vvit’, ‘rohith’, ‘rohith’, ‘vvit’, ‘sridevi’, ‘sridevi’, ‘vignan’, ‘ sravan’, ‘sravan’, ‘vignan’, ‘gnanesh’, ‘gnanesh’, ‘iit’]

Método 2: Usar mapa()

Esta función se utiliza para asignar la columna del marco de datos dado a la lista

Sintaxis: dataframe.select(‘Column_Name’).rdd.map(lambda x : x[0]).collect()

dónde,

  • el marco de datos es el marco de datos pyspark
  • Column_Name es la columna que se convertirá en la lista
  • map() es el método disponible en rdd que toma una expresión lambda como parámetro y convierte la columna en una lista
  • collect() se utiliza para recopilar los datos en las columnas

Ejemplo: código de Python para convertir la columna del marco de datos pyspark en una lista usando la función de mapa.

Python3

# convert  student Name  to list using map
print(dataframe.select('student Name').
      rdd.map(lambda x : x[0]).collect())
 
# convert  student ID  to list using map
print(dataframe.select('student ID').
      rdd.map(lambda x : x[0]).collect())
 
# convert  student college  to list using
# map
print(dataframe.select('college').
      rdd.map(lambda x : x[0]).collect())

Producción:

[‘sravan’, ‘ojaswi’, ‘rohith’, ‘sridevi’, ‘sravan’, ‘gnanesh’]

[‘1’, ‘2’, ‘3’, ‘4’, ‘1’, ‘5’]

[‘vignan’, ‘vvit’, ‘vvit’, ‘vignan’, ‘vignan’, ‘iit’]

Método 3: Usar recopilar()

Collect se usa para recopilar los datos del marco de datos, usaremos una estructura de datos de comprensión para obtener la columna del marco de datos de pyspark en la lista con el método de recolección(). 

Sintaxis: [datos[0] para datos en dataframe.select(‘column_name’).collect()]

Dónde,

  • el marco de datos es el marco de datos pyspark
  • data es el iterador de la columna del marco de datos
  • column_name es la columna en el marco de datos

Ejemplo: código de Python para convertir columnas de marco de datos en una lista usando el método de recopilación()

Python3

# display college column in
# the list format using comprehension
print([data[0] for data in dataframe.
       select('college').collect()])
 
 
# display student ID column in the
# list format using comprehension
print([data[0] for data in dataframe.
       select('student ID').collect()])
 
# display subject1  column in the list
# format using comprehension
print([data[0] for data in dataframe.
       select('subject1').collect()])
 
# display subject2  column in the
# list format using comprehension
print([data[0] for data in dataframe.
       select('subject2').collect()])

Producción:

['vignan', 'vvit', 'vvit', 'vignan', 'vignan', 'iit']
['1', '2', '3', '4', '1', '5']
[67, 78, 100, 78, 89, 94]
[89, 89, 80, 80, 98, 98]

Método 4: Usando toLocalIterator()

Este método se usa para iterar los valores de la columna en el marco de datos, usaremos una estructura de datos de comprensión para que la columna del marco de datos pyspark aparezca en la lista con el método toLocalIterator().

Sintaxis: [datos[0] para datos en dataframe.select(‘column_name’).toLocalIterator()]

Dónde,

  • el marco de datos es el marco de datos pyspark
  • data es el iterador de la columna del marco de datos
  • column_name es la columna en el marco de datos

Ejemplo: convertir las columnas del marco de datos de pyspark en una lista usando el método toLocalIterator()

Python3

# display college column in the list
# format using comprehension
print([data[0] for data in dataframe.
       select('college').collect()])
 
 
# display student ID column in the
# list format using comprehension
print([data[0] for data in dataframe.
       select('student ID').toLocalIterator()])
 
# display subject1  column in the list
# format using comprehension
print([data[0] for data in dataframe.
       select('subject1').toLocalIterator()])
 
# display subject2  column in the
# list format using comprehension
print([data[0] for data in dataframe.
       select('subject2').toLocalIterator()])

Producción:

['vignan', 'vvit', 'vvit', 'vignan', 'vignan', 'iit']
['1', '2', '3', '4', '1', '5']
[67, 78, 100, 78, 89, 94]
[89, 89, 80, 80, 98, 98]

Método 5: Usar toPandas()

Se usa para convertir una columna en un marco de datos, y luego podemos convertirla en una lista. 

Sintaxis: list(dataframe.select(‘column_name’).toPandas()[‘column_name’])

Dónde,

  • toPandas() se usa para convertir una columna particular en un marco de datos
  • column_name es la columna en el marco de datos pyspark

Ejemplo: convertir las columnas del marco de datos de pyspark en una lista usando el método toPandas()

Python3

# display college  column in
# the list format using toPandas
print(list(dataframe.select('college').
           toPandas()['college']))
 
 
# display student NAME  column in
# the list format using toPandas
print(list(dataframe.select('student NAME').
           toPandas()['student NAME']))
 
# display subject1  column in
# the list format using toPandas
print(list(dataframe.select('subject1').
           toPandas()['subject1']))
 
# display subject2  column
# in the list format using toPandas
print(list(dataframe.select('subject2').
           toPandas()['subject2']))

Producción:

[‘vignan’, ‘vvit’, ‘vvit’, ‘vignan’, ‘vignan’, ‘iit’]

[‘sravan’, ‘ojaswi’, ‘rohith’, ‘sridevi’, ‘sravan’, ‘gnanesh’]

[67, 78, 100, 78, 89, 94]

[89, 89, 80, 80, 98, 98]

Publicación traducida automáticamente

Artículo escrito por sravankumar8128 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 *