Mam Spark 1.5.0 DataFrame z mieszanką null
i puste ciągi w tej samej kolumnie. Chcę przekonwertować wszystkie puste ciągi we wszystkich kolumnach na null
(None
, w języku Python). DataFrame może mieć setki kolumn, więc staram się unikać zakodowanych na sztywno manipulacji dla każdej kolumny.Zamień puste ciągi na wartości Brak/puste w DataFrame
Zobacz moją próbę poniżej, co powoduje błąd.
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, Nie, nie zwraca listy. Zwraca obiekt DataFrame. Zaktualizowałem pytanie linkiem do dokumentacji Sparka. – dnlbrky
@palsch to nie jest ogólne pytanie Pythona! Spark DataFrames to rozproszona struktura danych wykorzystywana ogólnie w celu umożliwienia analizy dużych zbiorów danych. Więc twoje rozwiązanie nie pasuje. – eliasah
@eliasah Prawdę powiedziane Pythonic 'lambda x: Brak, jeśli nie x else x' owinięty' udf' działałby dobrze ... – zero323