Estoy tratando de un código simple para contraer mis variables categóricas en dataframe a binario clases después de la indexación
actualmente mi columna tiene 3 clases «A»,»B»,»C»
Estoy escribiendo un simple if else instrucción colapso de las clases como

def condition(r):
if (r.wo_flag=="SLM" or r.wo_flag=="NON-SLM"):
    r.wo_flag="dispatch" 
else: 
    r.wo_flag="non_dispatch" 
return r.wo_flag 

df_final=df_new.map(lambda x: condition(x)) 

No su trabajo que no entiende la condición else

|MData|Recode12|Status|DayOfWeekOfDispatch|MannerOfDispatch|Wo_flag|PlaceOfInjury|Race|
     M|      11|     M|                  4|               7|      C|           99| 1  |    
     M|       8|     D|                  3|               7|      A|           99| 1  |
     F|      10|     W|                  2|               7|      C|           99| 1  |
     M|       9|     D|                  1|               7|      B|           99| 1  |
     M|       8|     D|                  2|               7|      C|           99| 1  |

Esta es la Muestra de Datos

  • Estás tratando de reemplazar la aparición de la ‘A’ ,’B’ con ‘envío’ y ‘C’ con ‘non_dispatch’ en wo_flag columna ?
  • La adición de algunos datos de la muestra (lo que df que parece), junto con el mensaje de error completo, nos ayudará a ayudarle.
  • Sí, eso es lo que yo quiero hacer también he incluido lo que parece DF

1 Comentario

  1. 8

    Intente esto :

    from pyspark.sql.types import StringType
    from pyspark.sql.functions import udf
    
    def modify_values(r):
        if r == "A" or r =="B":
            return "dispatch"
        else:
            return "non-dispatch"
    ol_val = udf(modify_values, StringType())
    new_df = df.withColumn("wo_flag",ol_val(df.wo_flag))

    Las cosas que están haciendo mal:

    • Usted está tratando de modificar las Filas (Filas son immmutable)
    • Cuando un mapa de la operación se realiza en un dataframe , el resultado es una estructura de datos es una PipelinedRDD y no un dataframe . Usted tiene que aplicar .toDF() para obtener dataframe

Dejar respuesta

Please enter your comment!
Please enter your name here