0
在PySpark中,我們不能使用傳統的熊貓或R風格的符號來創建基於DataFrame中舊列的新列。例如,假設我嘗試連接兩個列:在PySpark數據框中,爲什麼__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
相反,實現的方法做,這是
df = df.withColumn('newcol', F.concat(df['col_1'], df['col_2']))
是否有一個原因PySpark不實現傳統的DataFrame表示法?
我想我明白了。換句話說,傳統的數據框是可變對象(向量列表),而Spark DataFrames是不可變的,因爲Spark是在功能性編程模型中設計的。 '__setitem__'是一個突變,不適用於不可變對象。 – Paul
是的,完全...你可以自己實施它和猴子補丁,但它會聞到魚腥味。 – zero323