En este artículo vamos a ver cómo crear un diccionario a partir de datos en dos columnas en PySpark usando Python.
Método 1: usar la comprensión del diccionario
Aquí crearemos un marco de datos con dos columnas y luego lo convertiremos en un diccionario usando la comprensión del diccionario.
Python
# importing pyspark # make sure you have installed the pyspark library import pyspark # Importing and creating a SparkSession # to work on DataFrames # The session name is 'Practice_Session' from pyspark.sql import SparkSession spark_session = SparkSession.builder.appName( 'Practice_Session').getOrCreate() # Creating a DataFrame using createDataFrame() # method, with hard coded data. rows = [['John', 54], ['Adam', 65], ['Michael', 56], ['Kelsey', 37], ['Chris', 49], ['Jonathan', 28], ['Anthony', 26], ['Esther', 48], ['Rachel', 52], ['Joseph', 56], ['Richard', 49], ] columns = ['Name', 'Age'] df_pyspark = spark_session.createDataFrame(rows, columns) # printing the DataFrame df_pyspark.show() # dictionary comprehension is used here # Name column here is the key while Age # columns is the value # You can also use {row['Age']:row['Name'] # for row in df_pyspark.collect()}, # to reverse the key,value pairs # collect() gives a list of # rows in the DataFrame result_dict = {row['Name']: row['Age'] for row in df_pyspark.collect()} # Printing a few key:value pairs of # our final resultant dictionary print(result_dict['John']) print(result_dict['Michael']) print(result_dict['Adam'])
Producción :
Método 2: convertir PySpark DataFrame y usar el método to_dict()
Aquí están los detalles del método to_dict():
to_dict() : PandasDataFrame.to_dict(orient=’dict’)
Parámetros:
- orientar: str {‘dict’, ‘list’, ‘series’, ‘split’, ‘registros’, ‘index’}
- Determina el tipo de los valores del diccionario.
Retorno: Devuelve un diccionario Python correspondiente al DataFrame
Python
# importing pyspark # make sure you have installed # the pyspark library import pyspark # Importing and creating a SparkSession # to work on DataFrames # The session name is 'Practice_Session' from pyspark.sql import SparkSession spark_session = SparkSession.builder.appName( 'Practice_Session').getOrCreate() # Creating a DataFrame using createDataFrame() # method, with hard coded data. rows = [['John', 54], ['Adam', 65], ['Michael', 56], ['Kelsey', 37], ['Chris', 49], ['Jonathan', 28], ['Anthony', 26], ['Esther', 48], ['Rachel', 52], ['Joseph', 56], ['Richard', 49], ] columns = ['Name', 'Age'] df_pyspark = spark_session.createDataFrame(rows, columns) # printing the DataFrame df_pyspark.show() # COnvert PySpark dataframe to pandas # dataframe df_pandas = df_pyspark.toPandas() # Convert the dataframe into # dictionary result = df_pandas.to_dict(orient='list') # Print the dictionary print(result)
Producción :
Método 3: iterando sobre una columna del diccionario
Iterando a través de columnas y produciendo un diccionario tal que las claves son columnas y los valores son una lista de valores en columnas.
Para esto, primero debemos convertir PySpark DataFrame en Pandas DataFrame
Python
# importing pyspark # make sure you have installed the pyspark library import pyspark # Importing and creating a SparkSession to work on # DataFrames The session name is 'Practice_Session' from pyspark.sql import SparkSession spark_session = SparkSession.builder.appName( 'Practice_Session').getOrCreate() # Creating a DataFrame using createDataFrame() # method, with hard coded data. rows = [['John', 54], ['Adam', 65], ['Michael', 56], ['Kelsey', 37], ['Chris', 49], ['Jonathan', 28], ['Anthony', 26], ['Esther', 48], ['Rachel', 52], ['Joseph', 56], ['Richard', 49], ] columns = ['Name', 'Age'] df_pyspark = spark_session.createDataFrame(rows, columns) # printing the DataFrame df_pyspark.show() result = {} # Convert PySpark DataFrame to Pandas # DataFrame df_pandas = df_pyspark.toPandas() # Traverse through each column for column in df_pandas.columns: # Add key as column_name and # value as list of column values result[column] = df_pandas[column].values.tolist() # Print the dictionary print(result)
Producción :
Publicación traducida automáticamente
Artículo escrito por pranavhfs1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA