在本文中,我们将了解如何将 PySpark DataFrame 转换为字典,其中键是列名称,值是列值。
在开始之前,我们将创建一个示例 DataFrame :
Python3
# Importing necessary libraries
from pyspark.sql import SparkSession
# Create a spark session
spark = SparkSession.builder.appName('DF_to_dict').getOrCreate()
# Create data in dataframe
data = [(('Ram'), '1991-04-01', 'M', 3000),
(('Mike'), '2000-05-19', 'M', 4000),
(('Rohini'), '1978-09-05', 'M', 4000),
(('Maria'), '1967-12-01', 'F', 4000),
(('Jenis'), '1980-02-17', 'F', 1200)]
# Column names in dataframe
columns = ["Name", "DOB", "Gender", "salary"]
# Create the spark dataframe
df = spark.createDataFrame(data=data,
schema=columns)
# Print the dataframe
df.show()
输出:
方法1:使用df.toPandas()
使用 df.toPandas() 将 PySpark 数据帧转换为 Pandas 数据帧。
用法:DataFrame.toPandas()
返回类型:返回与 Pyspark Dataframe 内容相同的 pandas DataFrame 。
获取每个列值并将值列表添加到以列名作为键的字典中。
Python3
# Declare an empty Dictionary
dict = {}
# Convert PySpark DataFrame to Pandas
# DataFrame
df = df.toPandas()
# Traverse through each column
for column in df.columns:
# Add key as column_name and
# value as list of column values
dict[column] = df[column].values.tolist()
# Print the dictionary
print(dict)
输出:
{‘Name’: [‘Ram’, ‘Mike’, ‘Rohini’, ‘Maria’, ‘Jenis’],
‘DOB’: [‘1991-04-01’, ‘2000-05-19’, ‘1978-09-05’, ‘1967-12-01’, ‘1980-02-17’],
‘Gender’: [‘M’, ‘M’, ‘M’, ‘F’, ‘F’],
‘salary’: [3000, 4000, 4000, 4000, 1200]}
方法2:使用df.collect()
将PySpark DataFrame 转换为行列表,并以列表形式返回 DataFrame 的所有记录。
用法:DataFrame.collect()
返回类型:以行列表的形式返回 DataFrame 的所有记录。
Python3
import numpy as np
# Convert the dataframe into list
# of rows
rows = [list(row) for row in df.collect()]
# COnvert the list into numpy array
ar = np.array(rows)
# Declare an empty dictionary
dict = {}
# Get through each column
for i, column in enumerate(df.columns):
# Add ith column as values in dict
# with key as ith column_name
dict[column] = list(ar[:, i])
# Print the dictionary
print(dict)
输出:
{‘Name’: [‘Ram’, ‘Mike’, ‘Rohini’, ‘Maria’, ‘Jenis’],
‘DOB’: [‘1991-04-01’, ‘2000-05-19’, ‘1978-09-05’, ‘1967-12-01’, ‘1980-02-17’],
‘Gender’: [‘M’, ‘M’, ‘M’, ‘F’, ‘F’],
‘salary’: [‘3000’, ‘4000’, ‘4000’, ‘4000’, ‘1200’]}
方法3:使用pandas.DataFrame.to_dict()
Pandas DataFrame 可以使用to_dict()方法直接转换为字典
用法:DataFrame.to_dict(orient=’dict’,)
参数:
- orient: 指示字典值的类型。它采用诸如 {‘dict’, ‘list’, ‘series’, ‘split’, ‘records’, ‘index’} 之类的值
Return type: 返回字典 对应 DataFrame 。
代码:
Python3
# COnvert PySpark dataframe to pandas
# dataframe
df = df.toPandas()
# Convert the dataframe into
# dictionary
dict = df.to_dict(orient = 'list')
# Print the dictionary
print(dict)
输出:
{‘Name’: [‘Ram’, ‘Mike’, ‘Rohini’, ‘Maria’, ‘Jenis’],
‘DOB’: [‘1991-04-01’, ‘2000-05-19’, ‘1978-09-05’, ‘1967-12-01’, ‘1980-02-17’],
‘Gender’: [‘M’, ‘M’, ‘M’, ‘F’, ‘F’],
‘salary’: [3000, 4000, 4000, 4000, 1200]}
将具有 2 列的 DataFrame 转换为字典,创建一个具有 2 列的 DataFrame ,命名为“Location”和“House_price”
Python3
# Importing necessary libraries
from pyspark.sql import SparkSession
# Create a spark session
spark = SparkSession.builder.appName('DF_to_dict').getOrCreate()
# Create data in dataframe
data = [(('Hyderabad'), 120000),
(('Delhi'), 124000),
(('Mumbai'), 344000),
(('Guntur'), 454000),
(('Bandra'), 111200)]
# Column names in dataframe
columns = ["Location", 'House_price']
# Create the spark dataframe
df = spark.createDataFrame(data=data, schema=columns)
# Print the dataframe
print('Dataframe : ')
df.show()
# COnvert PySpark dataframe to
# pandas dataframe
df = df.toPandas()
# Convert the dataframe into
# dictionary
dict = df.to_dict(orient='list')
# Print the dictionary
print('Dictionary :')
print(dict)
输出:
相关用法
- Python PySpark DataFrame tail方法用法及代码示例
- Python PySpark SQL Functions translate方法用法及代码示例
- Python PySpark SQL Functions lit方法用法及代码示例
- Python PySpark RDD glom方法用法及代码示例
- Python PySpark DataFrame withColumn方法用法及代码示例
- Python PySpark DataFrame alias方法用法及代码示例
- Python PySpark SQL Functions explode方法用法及代码示例
- Python PySpark DataFrame toPandas方法用法及代码示例
- Python PySpark DataFrame transform方法用法及代码示例
- Python PySpark SQL Functions col方法用法及代码示例
- Python PySpark DataFrame replace方法用法及代码示例
- Python PySpark SQL Functions instr方法用法及代码示例
- Python PySpark RDD partitionBy方法用法及代码示例
- Python PySpark DataFrame selectExpr方法用法及代码示例
- Python PySpark Column startswith方法用法及代码示例
- Python PySpark SQL Functions mean方法用法及代码示例
- Python PySpark DataFrame head方法用法及代码示例
- Python PySpark DataFrame join方法用法及代码示例
- Python PySpark Column withField方法用法及代码示例
- Python PySpark DataFrame union方法用法及代码示例
- Python PySpark DataFrame dtypes属性用法及代码示例
- Python PySpark SQL Functions round方法用法及代码示例
- Python PySpark RDD count方法用法及代码示例
- Python PySpark SQL Functions length方法用法及代码示例
- Python PySpark DataFrame sort方法用法及代码示例
注:本文由纯净天空筛选整理自ManikantaBandla大神的英文原创作品 Convert PySpark DataFrame to Dictionary in Python。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。