📜  如何在 PySpark DataFrame 中添加常量列?

📅  最后修改于: 2022-05-13 01:55:31.316000             🧑  作者: Mango

如何在 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() 选择数据框:

示例 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()

输出: