PySparkのcol関数の引数について
8841 ワード
モチベーション
col("columnName")で指定されたcolumnNameの意味がわからなかったので確認した。
結果
下記のリンクにあるように、col("columnName") と指定した場合には、まだDataFrameとの関連付けがされていないcolの状態である。(A generic column no yet associated with a DataFrame.)
そこでWithcolumnメソッドなどの引数で使われた場合に、はじめてDataFrameとの関連付けが行われDataFrameの該当するカラムを得ることになる。
なお、colのカラム名をDataFrameのカラム名から見つけることができなかった場合に、AnalysisException: cannot resolve 'colname' given input columns:
となる。
from pyspark.sql.functions import col
df = df.withColumn('new_column_name', col("columnName"))
なお、余談であるが、リテラルのColumnオブジェクトを生成する場合には、lit関数を用いる。
from pyspark.sql.functions import lit
data = [('Alice', 13,),('Bob',17),('Taro',25)]
df = spark.createDataFrame(data,['name', 'age'])
df.show()
df = df.withColumn('newcol',lit('hoge'))
df.show()
+-----+---+
| name|age|
+-----+---+
|Alice| 13|
| Bob| 17|
| Taro| 25|
+-----+---+
+-----+---+------+
| name|age|newcol|
+-----+---+------+
|Alice| 13| hoge|
| Bob| 17| hoge|
| Taro| 25| hoge|
+-----+---+------+
Author And Source
この問題について(PySparkのcol関数の引数について), 我々は、より多くの情報をここで見つけました https://zenn.dev/tjjj/articles/3792a3dd1e742c著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Collection and Share based on the CC protocol