PySpark公式ウェブサイトのドキュメントはあまり有益ではないので、pyspark.sql.functions
のこれら2つの方法の違いを理解するのは難しいと思います。たとえば、次のコード:
import pyspark.sql.functions as F
print(F.col('col_name'))
print(F.lit('col_name'))
結果は次のとおりです。
Column<b'col_name'>
Column<b'col_name'>
では、2つの違いは何ですか?また、どちらを使用する必要があるのですか?
doc は言う:
col:
指定された列名に基づいて列を返します。
点灯:
リテラル値の列を作成します
次のようなデータフレームがあるとします。
_>>> import pyspark.sql.functions as F
>>> from pyspark.sql.types import *
>>> schema = StructType([StructField('A', StringType(), True)])
>>> df = spark.createDataFrame([("a",), ("b",), ("c",)], schema)
>>> df.show()
+---+
| A|
+---+
| a|
| b|
| c|
+---+
_
col
を使用してA
から新しい列を作成する場合:
_>>> df.withColumn("new", F.col("A")).show()
+---+---+
| A|new|
+---+---+
| a| a|
| b| b|
| c| c|
+---+---+
_
したがって、col
は指定された名前の既存の列を取得します。F.col("A")
は、ここでは_df.A
_または_df["A"]
_と同等です。
F.lit("A")
を使用して列を作成する場合:
_>>> df.withColumn("new", F.lit("A")).show()
+---+---+
| A|new|
+---+---+
| a| A|
| b| A|
| c| A|
+---+---+
_
lit
は、指定された文字列を値として使用して定数列を作成します。
どちらもColumnオブジェクトを返しますが、内容と意味は異なります。