Yo soy principiante en Python y Chispa. Después de la creación de un DataFrame de CSV archivo, me gustaría saber cómo puedo recortar una columna. He intentado:

df = df.withColumn("Product", df.Product.strip())

df es mi marco de datos, Product es una columna en mi mesa

Pero yo veo siempre el error:

Column object is not callable

¿Tienes alguna sugerencia?

¿La solución de trabajo???

OriginalEl autor minh-hieu.pham | 2016-02-02

4 Comentarios

  1. 10

    A partir de la versión 1.5, la Chispa de SQL proporciona dos funciones específicas para recortar el espacio en blanco, ltrim y rtrim (de la búsqueda para «recortar» en el DataFrame documentación); tendrá que importar pyspark.sql.functions primera. Aquí está un ejemplo:

     from pyspark.sql import SQLContext
     from pyspark.sql.functions import *
     sqlContext = SQLContext(sc)
    
     df = sqlContext.createDataFrame([(' 2015-04-08 ',' 2015-05-10 ')], ['d1', 'd2']) # create a dataframe - notice the extra whitespaces in the date strings
     df.collect()
     # [Row(d1=u' 2015-04-08 ', d2=u' 2015-05-10 ')]
     df = df.withColumn('d1', ltrim(df.d1)) # trim left whitespace from column d1
     df.collect()
     # [Row(d1=u'2015-04-08 ', d2=u' 2015-05-10 ')]
     df = df.withColumn('d1', rtrim(df.d1))  # trim right whitespace from d1
     df.collect()
     # [Row(d1=u'2015-04-08', d2=u' 2015-05-10 ')]
    Por desgracia, la Chispa de la función trim() no recortar el espacio en blanco, pero sólo a los espacios. Este comportamiento fue cambiada con la issues.apache.org/jira/browse/SPARK-17299 . Para recortar el espacio en blanco como «\t, \n», etc. una de las necesidades de una expresión regular.

    OriginalEl autor desertnaut

  2. 6

    La pyspark versión de la tira se llama a la función de recorte.
    Recorte de «recorte de los espacios de ambos extremos de la cadena especificada en la columna».
    Asegúrese de importar la función primera y poner la columna que está recortando en el interior de su función.

    Los siguientes trabajos:

    from pyspark.sql.functions import trim
    df = df.withColumn("Product", trim(df.Product))
    

    OriginalEl autor jdhaen

  3. 4

    Lo hice con la udf como este:

    from pyspark.sql.functions import udf
    
    def trim(string):
        return string.strip()
    trim=udf(trim)
    
    df = sqlContext.createDataFrame([(' 2015-04-08 ',' 2015-05-10 ')], ['d1', 'd2'])
    
    df2 = df.select(trim(df['d1']).alias('d1'),trim(df['d2']).alias('d2'))
    

    de salida se parece a esto:

    df.show()
    df2.show()
    +------------+------------+
    |          d1|          d2|
    +------------+------------+
    | 2015-04-08 | 2015-05-10 |
    +------------+------------+
    
    +----------+----------+
    |        d1|        d2|
    +----------+----------+
    |2015-04-08|2015-05-10|
    +----------+----------+
    

    OriginalEl autor Babu

  4. 1
    from pyspark.sql.functions import trim
    
    df = df.withColumn("Product", trim(col("Product")))
    

    OriginalEl autor novice

Dejar respuesta

Please enter your comment!
Please enter your name here