Agregue una nueva columna con valor predeterminado en el marco de datos de PySpark

En este artículo, veremos cómo agregar una nueva columna con un valor predeterminado en PySpark Dataframe.

Las tres formas de agregar una columna a PandPySpark como DataFrame con valor predeterminado.

  • Usando pyspark.sql.DataFrame.withColumn(colName, col)
  • Usando pyspark.sql.DataFrame.select(*columnas)
  • Usando pyspark.sql.SparkSession.sql(sqlQuery)

Método 1: Usar pyspark.sql.DataFrame.withColumn(colName, col)

Agrega una columna o reemplaza la columna existente que tiene el mismo nombre a un DataFrame y devuelve un nuevo DataFrame con todas las columnas existentes a las nuevas. La expresión de la columna debe ser una expresión sobre este DataFrame y agregar una columna de algún otro DataFrame generará un error.

Sintaxis: pyspark.sql.DataFrame.withColumn(colName, col)

Parámetros: este método acepta el siguiente parámetro como se mencionó anteriormente y se describe a continuación.

  • colName: Es una string y contiene el nombre de la nueva columna.
  • col: Es una expresión de columna para la nueva columna.

Devoluciones: marco de datos

Primero, cree un DataFrame simple.

Python3

import findspark
findspark.init()
  
# Importing the modules
from datetime import datetime, date
import pandas as pd
from pyspark.sql import SparkSession
  
# creating the session
spark = SparkSession.builder.getOrCreate()
  
# creating the dataframe
pandas_df = pd.DataFrame({
    'Name': ['Anurag', 'Manjeet', 'Shubham',
             'Saurabh', 'Ujjawal'],
    'Address': ['Patna', 'Delhi', 'Coimbatore',
                'Greater noida', 'Patna'],
    'ID': [20123, 20124, 20145, 20146, 20147],
    'Sell': [140000, 300000, 600000, 200000, 600000]
})
df = spark.createDataFrame(pandas_df)
print("Original DataFrame :")
df.show()

Producción:

Agregue una nueva columna con valor predeterminado:

Python3

# Add new column with NUll
from pyspark.sql.functions import lit
df = df.withColumn("Rewards", lit(None))
df.show()
  
# Add new constanst column
df = df.withColumn("Bonus Percent", lit(0.25))
df.show()

Producción:

Método 2: Usar pyspark.sql.DataFrame.select(*cols)

Podemos usar pyspark.sql.DataFrame.select() para crear una nueva columna en DataFrame y configurarla con los valores predeterminados. Proyecta un conjunto de expresiones y devuelve un nuevo DataFrame.

Sintaxis: pyspark.sql.DataFrame.select(*columnas)

Parámetros: este método acepta el siguiente parámetro como se mencionó anteriormente y se describe a continuación.

  • cols: Contiene nombres de columnas (string) o expresiones (Column)

Devoluciones: marco de datos

Primero, cree un DataFrame simple.

Python3

import findspark
findspark.init()
  
# Importing the modules
from datetime import datetime, date
import pandas as pd
from pyspark.sql import SparkSession
  
# creating the session
spark = SparkSession.builder.getOrCreate()
  
# creating the dataframe
pandas_df = pd.DataFrame({
    'Name': ['Anurag', 'Manjeet', 'Shubham',
             'Saurabh', 'Ujjawal'],
    'Address': ['Patna', 'Delhi', 'Coimbatore',
                'Greater noida', 'Patna'],
    'ID': [20123, 20124, 20145, 20146, 20147],
    'Sell': [140000, 300000, 600000, 200000, 600000]
})
df = spark.createDataFrame(pandas_df)
print("Original DataFrame :")
df.show()

Producción:

Agregue una nueva columna con valor predeterminado:

Python3

# Add new column with NUll
from pyspark.sql.functions import lit
df = df.select('*', lit(None).alias("Rewards"))
  
# Add new constanst column
df = df.select('*', lit(0.25).alias("Bonus Percent"))
df.show()

Producción:

Método 3: Usar pyspark.sql.SparkSession.sql(sqlQuery)

Podemos usar pyspark.sql.SparkSession.sql() para crear una nueva columna en DataFrame y configurarla con los valores predeterminados. Devuelve un DataFrame que representa el resultado de la consulta dada.

Sintaxis: pyspark.sql.SparkSession.sql(sqlQuery)

Parámetros: este método acepta el siguiente parámetro como se mencionó anteriormente y se describe a continuación.

  • sqlQuery: es una string y contiene la consulta ejecutable sql.

Devoluciones: marco de datos

Primero, crea un DataFrame simple:

Python3

import findspark
findspark.init()
  
# Importing the modules
from datetime import datetime, date
import pandas as pd
from pyspark.sql import SparkSession
  
# creating the session
spark = SparkSession.builder.getOrCreate()
  
# creating the dataframe
pandas_df = pd.DataFrame({
    'Name': ['Anurag', 'Manjeet', 'Shubham',
             'Saurabh', 'Ujjawal'],
    'Address': ['Patna', 'Delhi', 'Coimbatore',
                'Greater noida', 'Patna'],
    'ID': [20123, 20124, 20145, 20146, 20147],
    'Sell': [140000, 300000, 600000, 200000, 600000]
})
df = spark.createDataFrame(pandas_df)
print("Original DataFrame :")
df.show()

Producción:

Agregue una nueva columna con valor predeterminado:

Python3

# Add columns to DataFrame using SQL
df.createOrReplaceTempView("GFG_Table")
  
# Add new column with NUll
df=spark.sql("select *, null as Rewards from GFG_Table")
  
# Add new constanst column
df.createOrReplaceTempView("GFG_Table")
df=spark.sql("select *, '0.25' as Bonus_Percent from GFG_Table")
df.show()

Producción:

Publicación traducida automáticamente

Artículo escrito por SHUBHAMSINGH10 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 *