Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

149
Vistas
Cuente el número de palabras en un marco de datos de chispa

¿Cómo podemos encontrar la cantidad de palabras en una columna de un marco de datos de chispa sin usar la función REEMPLAZAR () de SQL? A continuación se muestra el código y la entrada con la que estoy trabajando, pero la función replace () no funciona.

 from pyspark.sql import SparkSession my_spark = SparkSession \ .builder \ .appName("Python Spark SQL example") \ .enableHiveSupport() \ .getOrCreate() parqFileName = 'gs://caserta-pyspark-eval/train.pqt' tuesdayDF = my_spark.read.parquet(parqFileName) tuesdayDF.createOrReplaceTempView("parquetFile") tuesdaycrimes = spark.sql("SELECT LENGTH(Address) - LENGTH(REPLACE(Address, ' ', ''))+1 FROM parquetFile") print(tuesdaycrimes.show()) +-------------------+--------------+--------------------+---------+----------+--------------+--------------------+-----------+---------+ | Dates| Category| Descript|DayOfWeek|PdDistrict| Resolution| Address| X| Y| +-------------------+--------------+--------------------+---------+----------+--------------+--------------------+-----------+---------+ |2015-05-14 03:53:00| WARRANTS| WARRANT ARREST|Wednesday| NORTHERN|ARREST, BOOKED| OAK ST / LAGUNA ST| -122.42589|37.774597| |2015-05-14 03:53:00|OTHER OFFENSES|TRAFFIC VIOLATION...|Wednesday| NORTHERN|ARREST, BOOKED| OAK ST / LAGUNA ST| -122.42589|37.774597| |2015-05-14 03:33:00|OTHER OFFENSES|TRAFFIC VIOLATION...|Wednesday| NORTHERN|ARREST, BOOKED|VANNESS AV / GREE...| -122.42436|37.800415|
over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Hay varias formas de contar las palabras usando las funciones de pyspark DataFrame, según lo que esté buscando.

Crear datos de ejemplo

 import pyspark.sql.functions as f data = [ ("2015-05-14 03:53:00", "WARRANT ARREST"), ("2015-05-14 03:53:00", "TRAFFIC VIOLATION"), ("2015-05-14 03:33:00", "TRAFFIC VIOLATION") ] df = sqlCtx.createDataFrame(data, ["Dates", "Description"]) df.show()

En este ejemplo, contaremos las palabras en la columna Description .

Contar en cada fila

Si desea el recuento de palabras en la columna especificada para cada fila, puede crear una nueva columna usando withColumn() y hacer lo siguiente:

  • Use pyspark.sql.functions.split() para dividir la cadena en una lista
  • Use pyspark.sql.functions.size() para contar la longitud de la lista

Por ejemplo:

 df = df.withColumn('wordCount', f.size(f.split(f.col('Description'), ' '))) df.show() #+-------------------+-----------------+---------+ #| Dates| Description|wordCount| #+-------------------+-----------------+---------+ #|2015-05-14 03:53:00| WARRANT ARREST| 2| #|2015-05-14 03:53:00|TRAFFIC VIOLATION| 2| #|2015-05-14 03:33:00|TRAFFIC VIOLATION| 2| #+-------------------+-----------------+---------+

Suma el recuento de palabras en todas las filas

Si desea contar el número total de palabras en la columna en todo el DataFrame, puede usar pyspark.sql.functions.sum() :

 df.select(f.sum('wordCount')).collect() #[Row(sum(wordCount)=6)]

Contar la ocurrencia de cada palabra

Si desea el recuento de cada palabra en todo el DataFrame, puede usar split() y pyspark.sql.function.explode() seguido de groupBy y count() .

 df.withColumn('word', f.explode(f.split(f.col('Description'), ' ')))\ .groupBy('word')\ .count()\ .sort('count', ascending=False)\ .show() #+---------+-----+ #| word|count| #+---------+-----+ #| TRAFFIC| 2| #|VIOLATION| 2| #| WARRANT| 1| #| ARREST| 1| #+---------+-----+
over 4 years ago · Santiago Trujillo Denunciar

0

Puede hacerlo simplemente usando split y el size de las funciones de la API de pyspark (a continuación se muestra un ejemplo): -

 sqlContext.createDataFrame([['this is a sample address'],['another address']])\ .select(F.size(F.split(F.col("_1"), " "))).show() Below is Output:- +------------------+ |size(split(_1, ))| +------------------+ | 5| | 2| +------------------+
over 4 years ago · Santiago Trujillo Denunciar

0

Puede definir una función udf como

 def splitAndCountUdf(x): return len(x.split(" ")) from pyspark.sql import functions as F countWords = F.udf(splitAndCountUdf, 'int')

y llámelo usando la función .withColumn como

 tuesdayDF.withColumn("wordCount", countWords(tuesdayDF.address))

Y si desea un recuento distinto de palabras, puede cambiar la función udf para incluir el set como

 def splitAndCountUdf(x): return len(set(x.split(" "))) from pyspark.sql import functions as F countWords = F.udf(splitAndCountUdf, 'int')
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda