1
pyspark sqlを使用して、以下のデータフレーム内のカテゴリ番号にラベルを割り当てたいとします。PySparkのテーブルのカテゴリデータにラベルを割り当てる
結婚欄の1 =既婚、2 =未婚。教育カラム1 =グラと2 =学部
Current Dataframe: +--------+---------+-----+ |MARRIAGE|EDUCATION|Total| +--------+---------+-----+ | 1| 2| 87| | 1| 1| 123| | 2| 2| 3| | 2| 1| 8| +--------+---------+-----+
Resulting Dataframe: +---------+---------+-----+ |MARRIAGE |EDUCATION|Total| +---------+---------+-----+ |Married |Grad | 87| |Married |UnderGrad| 123| |UnMarried|Grad | 3| |UnMarried|UnderGrad| 8| +---------+---------+-----+
では、単一のUDFとwithColumn()を使用してラベルを割り当てることが可能ですか?単一のUDFでデータフレーム全体を渡し、そのまま列名を保持する方法はありますか?
以下のように別々のudfsを使用して、各列に対して操作を行うソリューションを考えることができます。しかし、一緒にやる方法があるかどうかは分かりません。
from pyspark.sql import functions as F
def assign_marital_names(record):
if record == 1:
return "Married"
elif record == 2:
return "UnMarried"
def assign_edu_names(record):
if record == 1:
return "Grad"
elif record == 2:
return "UnderGrad"
assign_marital_udf = F.udf(assign_marital_names)
assign_edu_udf = F.udf(assign_edu_names)
df.withColumn("MARRIAGE", assign_marital_udf("MARRIAGE")).\
withColumn("EDUCATION", assign_edu_udf("EDUCATION")).show(truncate=False)