¿Cómo obtener un valor del objeto Row en PySpark Dataframe?

En este artículo, vamos a aprender cómo obtener un valor del objeto Row en PySpark DataFrame.

Método 1: Usar el método mágico __getitem()__

Crearemos un Spark DataFrame con al menos una fila usando createDataFrame(). Luego obtenemos un objeto Row de una lista de objetos de fila devueltos por DataFrame.collect(). Luego usamos el método mágico __getitem()__ para obtener un elemento de un nombre de columna en particular. A continuación se muestra la sintaxis.

Sintaxis : DataFrame.__getitem__(‘Column_Name’)

Devuelve : valor correspondiente al nombre de la columna en el objeto Fila

Python

# library import
import pyspark
from pyspark.sql import SparkSession
from pyspark.sql import Row
  
# Session Creation
random_value_session = SparkSession.builder.appName(
    'Random_Value_Session'
).getOrCreate()
  
# Data filled in our DataFrame
# 5 rows below
rows = [['All England Open', 'March', 'Super 1000'],
        ['Malaysia Open', 'January', 'Super 750'],
        ['Korea Open', 'April', 'Super 500'],
        ['Hylo Open', 'November', 'Super 100'],
        ['Spain Masters', 'March', 'Super 300']]
  
# Columns of our DataFrame
columns = ['Tournament', 'Month', 'Level']
  
#DataFrame is created
dataframe = random_value_session.createDataFrame(rows,
                                                 columns)
  
# Showing the DataFrame
dataframe.show()
  
# getting list of rows using collect()
row_list = dataframe.collect()
  
# Printing the first Row object
# from which data is extracted
print(row_list[0])
  
# Using __getitem__() magic method
# To get value corresponding to a particular
# column
print(row_list[0].__getitem__('Level'))
print(row_list[0].__getitem__('Tournament'))
print(row_list[0].__getitem__('Level'))
print(row_list[0].__getitem__('Month'))

Producción: 

+----------------+--------+----------+
|      Tournament|   Month|     Level|
+----------------+--------+----------+
|All England Open|   March|Super 1000|
|   Malaysia Open| January| Super 750|
|      Korea Open|   April| Super 500|
|       Hylo Open|November| Super 100|
|   Spain Masters|   March| Super 300|
+----------------+--------+----------+

Row(Tournament='All England Open', Month='March', Level='Super 1000')
Super 1000
All England Open
Super 1000
March

Método 2: Usar el método asDict()

Crearemos un Spark DataFrame con al menos una fila usando createDataFrame() . Luego obtenemos un objeto Row de una lista de objetos de fila devueltos por DataFrame.collect() . Luego usamos el método asDict() para obtener un diccionario donde los nombres de columna son claves y sus valores de fila son valores de diccionario. A continuación se muestra la sintaxis:

Sintaxis : DataFrame.asDict (recursivo)

Parámetros

recursivo: bool: devuelve filas anidadas como dict. El valor predeterminado es Falso .

Luego obtenemos fácilmente el valor del diccionario usando DictionaryName[‘key_name’].

Python

# library imports are done here
import pyspark
from pyspark.sql import SparkSession
  
# Session Creation
random_value_session = SparkSession.builder.appName(
    'Random_Value_Session'
).getOrCreate()
  
# Data filled in our DataFrame
# Rows below will be filled
rows = [['French Open', 'October', 'Super 750'],
        ['Macau Open', 'November', 'Super 300'],
        ['India Open', 'January', 'Super 500'],
        ['Odisha Open', 'January', 'Super 100'],
        ['China Open', 'November', 'Super 1000']]
  
# DataFrame Columns
columns = ['Tournament', 'Month', 'Level']
  
# DataFrame creation
dataframe = random_value_session.createDataFrame(rows,
                                                 columns)
  
# DataFrame print
dataframe.show()
  
# list of rows using collect()
row_list = dataframe.collect()
  
# Printing the second Row object
# from which we will read data
print(row_list[1])
print()
  
# Printing dictionary to make
# things more clear
print(row_list[1].asDict())
print()
  
# Using asDict() method to convert row object
# into a dictionary where the column names are keys
# Using column names as keys to get respective values
print(row_list[1].asDict()['Tournament'])
print(row_list[1].asDict()['Month'])
print(row_list[1].asDict()['Level'])

Producción : 

+-----------+--------+----------+
| Tournament|   Month|     Level|
+-----------+--------+----------+
|French Open| October| Super 750|
| Macau Open|November| Super 300|
| India Open| January| Super 500|
|Odisha Open| January| Super 100|
| China Open|November|Super 1000|
+-----------+--------+----------+

Row(Tournament='Macau Open', Month='November', Level='Super 300')

{'Tournament': 'Macau Open', 'Month': 'November', 'Level': 'Super 300'}

Macau Open
November
Super 300

Método 3: Imaginar el objeto Fila como una lista

Aquí imaginaremos un objeto Fila como una Lista de Python y realizaremos operaciones. Crearemos un Spark DataFrame con al menos una fila usando createDataFrame() . Luego obtenemos un objeto Row de una lista de objetos de fila devueltos por DataFrame.collect() . Como estamos imaginando el objeto Fila como una Lista, solo usamos: 

Sintaxis : RowObject[‘Column_name’]

Devuelve : valor correspondiente al nombre de la columna en el objeto de fila.

Python

# library imports are done here
import pyspark
from pyspark.sql import SparkSession
  
# Session Creation
random_value_session = SparkSession.builder.appName(
    'Random_Value_Session'
).getOrCreate()
  
# Data filled in our DataFrame
# Rows below will be filled
rows = [['Denmark Open', 'October', 'Super 1000'],
        ['Indonesia Open', 'June', 'Super 1000'],
        ['Korea Open', 'April', 'Super 500'],
        ['Japan Open', 'August', 'Super 750'],
        ['Akita Masters', 'July', 'Super 100']]
  
# DataFrame Columns
columns = ['Tournament', 'Month', 'Level']
  
# DataFrame creation
dataframe = random_value_session.createDataFrame(rows,
                                                 columns)
  
# DataFrame print
dataframe.show()
  
# list of rows using collect()
row_list = dataframe.collect()
  
# Lets take the third Row object
row_object = row_list[2]
  
# If we imagine it as a Python List,
# We can get the first value of the list,
# index 0, let's try it
print(row_object[0])
  
# We got the value of column at index 0
# which is - 'Tournament'
  
# A few more examples
print(row_list[4][0])
print(row_list[3][1])
print(row_list[4][2])

Producción: 

+--------------+-------+----------+
|    Tournament|  Month|     Level|
+--------------+-------+----------+
|  Denmark Open|October|Super 1000|
|Indonesia Open|   June|Super 1000|
|    Korea Open|  April| Super 500|
|    Japan Open| August| Super 750|
| Akita Masters|   July| Super 100|
+--------------+-------+----------+

Korea Open
Akita Masters
August
Super 100

Publicación traducida automáticamente

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