如何在 PySpark 数据框中添加多列?
在本文中,我们将看到在 PySpark Dataframes 中添加多列的不同方法。
让我们创建一个示例数据框进行演示:
使用的数据集: Cricket_data_set_odi
Python3
# import pandas to read json file
import pandas as pd
# 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()
# create Dataframe
df=spark.read.option(
"header",True).csv("Cricket_data_set_odi.csv")
# Display Schema
df.printSchema()
# Show Dataframe
df.show()
Python3
df.withColumn(
'Avg_runs', df.Runs / df.Matches).withColumn(
'wkt+10', df.Wickets+10).show()
Python3
# Using select() to Add Multiple Column
df.select('*', (df.Runs / df.Matches).alias('Avg_runs'),
(df.Wickets+10).alias('wkt+10')).show()
Python3
from pyspark.sql.functions import col, lit
df.select('*',lit("Cricket").alias("Sport")).
withColumn("Fitness",lit(("Good"))).show()
输出:
方法一:使用 withColumn()
withColumn() 用于在 DataFrame 上添加新列或更新现有列
Syntax: df.withColumn(colName, col)
Returns: A new :class:`DataFrame` by adding a column or replacing the existing column that has the same name.
代码:
蟒蛇3
df.withColumn(
'Avg_runs', df.Runs / df.Matches).withColumn(
'wkt+10', df.Wickets+10).show()
输出:
方法 2 :使用 select()
您还可以使用 select 添加多个列。
Syntax: df.select(*cols)
代码:
蟒蛇3
# Using select() to Add Multiple Column
df.select('*', (df.Runs / df.Matches).alias('Avg_runs'),
(df.Wickets+10).alias('wkt+10')).show()
输出 :
方法 3:使用 withColumn() 和 select() 向 DataFrame 添加常量多列
让我们在下面的代码中使用 lit() SQL函数创建一个具有常量值的新列。 Pyspark 中的 lit()函数用于通过分配常量或字面量值在 Pyspark 数据帧中添加新列。
蟒蛇3
from pyspark.sql.functions import col, lit
df.select('*',lit("Cricket").alias("Sport")).
withColumn("Fitness",lit(("Good"))).show()
输出: