如何在 PySpark DataFrame 中添加常量列?
在本文中,我们将了解如何在 PySpark Dataframe 中添加常量列。
可以通过以下方式完成:
- 使用 Lit()
- 使用Sql查询。
创建用于演示的数据框:
Python3
# Create a spark session
from pyspark.sql import SparkSession
from pyspark.sql.functions import lit
spark = SparkSession.builder.appName('SparkExamples').getOrCreate()
# Create a spark dataframe
columns = ["Name", "Course_Name",
"Months",
"Course_Fees", "Discount",
"Start_Date", "Payment_Done"]
data = [
("Amit Pathak", "Python", 3,
10000, 1000, "02-07-2021", True),
("Shikhar Mishra", "Soft skills",
2, 8000, 800, "07-10-2021", False),
("Shivani Suvarna", "Accounting", 6,
15000, 1500, "20-08-2021", True),
("Pooja Jain", "Data Science", 12,
60000, 900, "02-12-2021", False),
]
df = spark.createDataFrame(data).toDF(*columns)
# View the dataframe
df.show()
Python3
df.withColumn('Status', lit(0)).show()
Python3
from pyspark.sql.functions import when, lit, col
df.withColumn(
"Great_Discount", when(col("Discount") >=1000,lit(
"Yes")).otherwise(lit("NO"))).show()
Python3
df.registerTempTable('table')
newDF = spark.sql('select *, 1 as newCol from table')
newDF.show()
输出:
方法一:使用lit()
在这些方法中,我们将使用 lit()函数,在这里我们可以使用 select 方法添加值为 1 的常量列 'literal_values_1'。 lit()函数将向所有行插入常量值。我们将使用 withColumn() 选择数据框:
Syntax: df.withColumn(“NEW_COL”, lit(VALUE))
示例 1:在列中添加常量值。
蟒蛇3
df.withColumn('Status', lit(0)).show()
输出:
示例 2:添加基于另一列的常量值。
蟒蛇3
from pyspark.sql.functions import when, lit, col
df.withColumn(
"Great_Discount", when(col("Discount") >=1000,lit(
"Yes")).otherwise(lit("NO"))).show()
输出:
方法二:使用Sql查询
这里我们将在 Pyspark 中使用 sql 查询,我们将在 createTempView() 的帮助下创建表的临时视图,并且该临时表的生命周期取决于 sparkSession 的生命周期。 registerTempTable() 将创建临时表,如果它不可用,或者如果它可用则替换它。
然后在创建表后通过 SQL 子句选择表,它将所有值作为一个字符串。
蟒蛇3
df.registerTempTable('table')
newDF = spark.sql('select *, 1 as newCol from table')
newDF.show()
输出: