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.

Pyspark: Cómo ignorar las comillas dobles de los datos presentes en los archivos CSV.

Tengo ‘ (comillas simples) en mis datos, todos los valores de columna correspondientes se agrupan en una columna, a pesar de que he utilizado el valor delimitador. En mi caso, ‘|’ es mi delimitador.

Datos actuales:

a|’b|c|d|

Salida esperada:

a|’b|c|d

Salida actual obtenida:

a|’b|c|d|null|null| (aquí la tercera y cuarta columna vienen como una sola columna, en lugar de las verdaderas tercera y cuarta columnas. los valores son null)

He intentado el siguiente enfoque:

Enfoque 1:

df=spark.read.csv(filepath,header=True,sep=’|’,quote=”)

El enfoque anterior proporciona los datos de columna específicos correctamente, pero las columnas vacías tienen los valores ” ” ” ” “, pero necesitamos que las columnas vacías estén como están.

Enfoque 2:

df=spark.read.csv(filepath,header=True,sep=’|’,quote=”,escape=’\”‘)

El enfoque anterior agrupa los valores en una sola columna, como en la salida actual.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Como experto en IT especializado en CSV y PySpark, sugeriría intentar el siguiente enfoque para resolver el problema:

    Enfoque:

    Puedes intentar reemplazar las comillas simples utilizando la función regexp_replace de PySpark antes de leer el archivo utilizando spark.read.csv(). A continuación se muestra un fragmento de código para ello:

    from pyspark.sql.functions import regexp_replace
    
    df = spark.read.text(filepath) \
        .select(regexp_replace('value', "'", "").alias('value')) \
        .selectExpr("split(value, '\\|') as columns") \
        .selectExpr("columns[0] as col1", "columns[1] as col2", "columns[2] as col3", "columns[3] as col4")
    

    Este enfoque reemplaza las comillas simples por una cadena vacía utilizando la función regexp_replace, y luego utiliza la función split() para dividir los datos en columnas separadas. Puedes definir los nombres de columna deseados en función del número de columnas en tus datos.

    Espero que este enfoque funcione para ti y te brinde el resultado esperado.

Comments are closed.