Spark DataFrame への定数列の追加
Spark DataFrame を使用する場合、次のような定数列を追加する必要があるシナリオがあります。各行に固定値を設定します。ただし、よくある間違いは、計算列の追加を目的とした withColumn を直接使用することです。
withColumn でのエラー
を使用して定数列を直接追加しようとすると、 withColumn を使用すると、次のようなエラーが発生します。
AttributeError: 'int' object has no attribute 'alias'
これは、withColumn が 2 番目の引数として計算式を表す Column オブジェクトを予期しているためです。整数などの定数値は列ではありません。
解決策
定数列を正しく追加するには、関数 lit を使用してリテラル値を作成します。この関数は定数値を引数として受け取り、Column オブジェクトを返します。
from pyspark.sql.functions import lit
df.withColumn('new_column', lit(10))
Complex Columns
配列などのより複雑な定数値の場合または構造体の場合は、次の関数を使用できます:
例:
from pyspark.sql.functions import array, struct, create_map df.withColumn("some_array", array(lit(1), lit(2), lit(3))) df.withColumn("some_struct", struct(lit("foo"), lit(1), lit(.3))) df.withColumn("some_map", create_map(lit("key1"), lit(1), lit("key2"), lit(2)))
代替アプローチ
Spark バージョン 2.2 以降では、typedLit 関数を使用して、シーケンスなどのサポートされるデータ型の定数列を作成することもできます。
もう 1 つの代替方法は UDF を使用することですが、これは上記の組み込み関数を使用するよりも遅くなります。
以上がSpark DataFrame に定数列を追加するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。