私はnull
と空の文字列を同じ列に入れたSpark 1.5.0 DataFrameを持っています。私はすべての列のすべての空の文字列をnull
(None
、Python)に変換したいと思います。 DataFrameには何百もの列があるので、各列のハードコード化された操作を避けようとしています。空の文字列をDataFrameのNone/Null値に置き換えます
以下の試行を参照してください。エラーが発生します。
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、いいえ、リストを返しません。 DataFrameを返します。 Sparkのドキュメントへのリンクで質問を更新しました。 – dnlbrky
@palsch一般的なPythonの質問ではありません! Spark DataFramesは、大きなデータに対して重いデータ分析を可能にするために一般的に使用される分散データ構造です。だからあなたは解決策には合っていません。 – eliasah
@eliasah真実Pythonic 'lambda x:' 'udf'でラップされたx else''はうまく動くでしょう:) – zero323