PySparkでは、従来のパンダやRスタイル表記を使用して、DataFrameの古い列に基づいて新しい列を作成することはできません。たとえば、私は2つの列を連結しようと言う:PySpark DataFramesでは、__setitem__が完全に実装されていないのはなぜですか?
import pyspark.sql.functions as F
df['newcol'] = F.concat(df['col_1'], df['col_2'])
結果:
はTypeError: 'DataFrame' object does not support item assignment
代わりに、これを行うための実装方法はPySparkがない理由は
df = df.withColumn('newcol', F.concat(df['col_1'], df['col_2']))
ありさ従来のDataFrame表記法を実装しますか?
ご理解いただけると思います。言い換えれば、従来のデータフレームは可変オブジェクト(ベクトルのリスト)ですが、Spark DataFramesは不変ですが、Sparkは関数型プログラミングモデル内で設計されています。 '__setitem__'は突然変異であり、不変オブジェクトには適用できません。 – Paul
はい、まさに...あなた自身とサルのパッチを実装することができますが、それは魚の臭いを帯びます。 – zero323