、I列と「DF」「COL1、COL2」データフレームがあると私は、各列に関数を適用した後行方向最大値を計算する:PySpark行単位簡単な例として機能する組成物
def f(x):
return (x+1)
max_udf=udf(lambda x,y: max(x,y), IntegerType())
f_udf=udf(f, IntegerType())
df2=df.withColumn("result", max_udf(f_udf(df.col1),f_udf(df.col2)))
もしそうならDF:
col1 col2
1 2
3 0
その後
DF2:
col1 col2 result
1 2 3
3 0 4
上記働くように見えるし、生成しません:「f_udfは」私のテーブルの上だけで正常に動作し、主な問題はである私は絶対に肯定的だ「という表現を評価することはできません... PythonUDFの#Fを」
をmax_udf。
追加の列を作成せずに、または基本的なマップ/リダクションを使用しないで、データフレームとudfsを使って上記を行う方法はありますか? 「max_udf」はどのように変更すればよいですか?
私も試してみた:
max_udf=udf(max, IntegerType())
同じエラーが発生しています。
私はまた、次の作品いることが確認されました:
df2=(df.withColumn("temp1", f_udf(df.col1))
.withColumn("temp2", f_udf(df.col2))
df2=df2.withColumn("result", max_udf(df2.temp1,df2.temp2))
なぜそれは私が一度にこれらの操作を行うことができないということですか?
"f_udf"と "max_udf"の関数に一般化された答えを見たいと思います。
ありがとう、これはこの質問に対する最初の本当の答えです! –
@AlexR。あなたがこの答えに満足しているなら、それを受け入れてください! – proinsias