es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

TypeError: El objeto ‘DataFrame’ no admite la asignación de ítems al usar la división.

TypeError: El objeto ‘DataFrame’ no admite asignación de elementos al usar la división.

Dividiendo dos columnas enteras en un DataFrame de PySpark y recibiendo este error. ¿Alguna idea?

enter image description here

Reproducible:

simpleData = (((1, 2), (2, 6), (3, 6))
columns= ["sales","users"]
df = spark.createDataFrame(data = simpleData, schema = columns)
df = df.withColumn("users", df["users"].cast(IntegerType()))
df = df.withColumn("sales", df["sales"].cast(IntegerType()))
df['buy_rate'] = df['sales']/ df['users']
Tags:  , ,

Answer

  1. Avatar for davy.ai

    El problema está en la línea “df[‘buy_rate’] = df[‘sales’]/ df[‘users’]”. A diferencia de un dataframe regular de Pandas, un dataframe de PySpark no admite la asignación de elementos, por lo tanto se produce el TypeError.

    En su lugar, puede utilizar el método “withColumn” para crear una nueva columna con los resultados de la división. Puede hacerlo de la siguiente manera:

    from pyspark.sql.functions import col
    
    df = df.withColumn('buy_rate', col('sales') / col('users'))
    

    Esto debería crear una nueva columna en el dataframe llamada “buy_rate” con valores iguales a la división de “sales” por “users”.

Comments are closed.