Ho un Spark 1.5.0 DataFrame con un mix di null
e stringhe vuote nella stessa colonna. Voglio convertire tutte le stringhe vuote in tutte le colonne a null
(None
, in Python). DataFrame può avere centinaia di colonne, quindi sto cercando di evitare le manipolazioni hard-coded di ogni colonna.Sostituisci stringhe vuote con valori None/null in DataFrame
Vedere il mio tentativo qui sotto, che si traduce in un errore.
from pyspark.sql import SQLContext
sqlContext = SQLContext(sc)
## Create a test DataFrame
testDF = sqlContext.createDataFrame([Row(col1='foo', col2=1), Row(col1='', col2=2), Row(col1=None, col2='')])
testDF.show()
## +----+----+
## |col1|col2|
## +----+----+
## | foo| 1|
## | | 2|
## |null|null|
## +----+----+
## Try to replace an empty string with None/null
testDF.replace('', None).show()
## ValueError: value should be a float, int, long, string, list, or tuple
## A string value of null (obviously) doesn't work...
testDF.replace('', 'null').na.drop(subset='col1').show()
## +----+----+
## |col1|col2|
## +----+----+
## | foo| 1|
## |null| 2|
## +----+----+
@palsch, No, non restituisce un elenco. Restituisce un DataFrame. Ho aggiornato la domanda con un link alla documentazione di Spark. – dnlbrky
@palsch non è una domanda generale di Python! Spark DataFrames è una struttura di dati distribuiti utilizzata generalmente per consentire analisi di dati pesanti su big data. Quindi la tua soluzione non è adatta. – eliasah
@eliasah A dire la verità Pythonico 'lambda x: Nessuno se non x altro x' avvolto con' udf' funzionerebbe bene :) – zero323