¿Cómo agregar una columna constante en un PySpark DataFrame?

En este artículo, veremos cómo agregar una columna constante en un marco de datos PySpark. 

Se puede hacer de estas formas:

  • Usando encendido()
  • Usando la consulta Sql.

Creando Dataframe para demostración:

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

Producción:

Método 1: Usando lit()

En estos métodos, usaremos la función lit(), usaremos withColumn() para seleccionar el marco de datos:

Sintaxis: df.withColumn(“NUEVA_COL”, iluminado(VALOR))

columnas

Python3

df.withColumn('Status', lit(0)).show()

Producción:

Ejemplo 2: Agregar valor constante basado en otra columna.

Python3

from pyspark.sql.functions import when, lit, col
  
df.withColumn(
  "Great_Discount", when(col("Discount") >=1000,lit(
    "Yes")).otherwise(lit("NO"))).show()

Producción:

Método 2: Usar la consulta Sql

Aquí usaremos la consulta sql dentro de Pyspark. Crearemos una vista temporal de la tabla con la ayuda de createTempView() y la vida de esta temperatura depende de la vida de sparkSession. registerTempTable() creará la tabla temporal si no está disponible o si está disponible, entonces reemplácela.

Luego, después de crear la tabla, seleccione la tabla por cláusula SQL que tomará todos los valores como una string.

Python3

df.registerTempTable('table')
newDF = spark.sql('select *, 1 as newCol from table')
newDF.show()

Producción:

Publicación traducida automáticamente

Artículo escrito por kumar_satyam y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *