Ich nehme eine mooc.pyspark.sql data.frame Funktionen zu verstehen
Es hat eine Zuweisung, bei der eine Spalte in den Kleinbuchstaben konvertiert werden muss. sentence=lower(column)
macht den Trick. Aber zuerst dachte ich, dass die Syntax sentence=column.lower()
sein sollte. Ich schaute auf die Dokumentation und konnte das Problem mit meiner Syntax nicht herausfinden. Wäre es möglich zu erklären, wie ich durch Suche nach Online-Dokumentation und Funktionsdefinition herausfinden könnte, dass ich eine falsche Syntax habe?
Ich bin besonders verwirrt wie This link zeigt, dass string.lower() funktioniert der Trick bei der Python regulären String-Objekte
from pyspark.sql.functions import regexp_replace, trim, col, lower
def removePunctuation(column):
"""Removes punctuation, changes to lower case, and strips leading and trailing spaces.
Note:
Only spaces, letters, and numbers should be retained. Other characters should should be
eliminated (e.g. it's becomes its). Leading and trailing spaces should be removed after
punctuation is removed.
Args:
column (Column): A Column containing a sentence.
Returns:
Column: A Column named 'sentence' with clean-up operations applied.
"""
sentence=lower(column)
return sentence
sentenceDF = sqlContext.createDataFrame([('Hi, you!',),
(' No under_score!',),
(' * Remove punctuation then spaces * ',)], ['sentence'])
sentenceDF.show(truncate=False)
(sentenceDF
.select(removePunctuation(col('sentence')))
.show(truncate=False))
i einig, dass Spalte eine andere ist Objekttyp als Zeichenfolgen. Aber wie würde ich dann wissen, dass '.lower()' nicht damit arbeitet und es '' niedriger (Spalte) 'sein sollte? Das Dokument zeigt kein funktionierendes Beispiel und ich würde daher wissen, wie man die richtige Syntax erkennt! – user2543622
Nun, Sie können die "Signatur" der aufgerufenen Methode überprüfen. Wenn Sie den Aufruf von ** removePunctuation ** in dieser Zeile überprüfen: '.select (removePunctuation (col ('sentence'))) werden Sie feststellen, dass vor dem Aufruf von' removePunctuation', col ('sentence') '. Sie können in der Dokumentation von [col] (https://spark.apache.org/docs/latest/api/python/pyspark.sql.html#pypark.sql.functions.col) nachlesen, dass es eine ** Spalte zurückgibt **. In den Kommentaren der Methode heißt es auch, dass removePunctuation eine Spalte als Argument anstelle einer Zeichenfolge erhält. –
Ich denke, dass ich hier nicht klar bin. Ich verstehe, dass die Eingabe im Col-Format ist. Aber woher weiß ich, dass ich im Falle des col-Formats 'lower (col)' verwenden muss und ich 'col.lower()' nicht verwenden kann? – user2543622