新しい spark DataFrame API を見ると、データフレーム列を変更できるかどうかは不明です。
x
データフレームの行列の値を変更するにはどうすればy
よいですか?
これpandas
は次のようになります。
df.ix[x,y] = new_value
編集:以下の内容を統合すると、既存のデータフレームは不変であるため変更できませんが、必要な変更を加えた新しいデータフレームを返すことができます。
次のような条件に基づいて列の値を置き換えるだけの場合np.where
:
from pyspark.sql import functions as F
update_func = (F.when(F.col('update_col') == replace_val, new_value)
.otherwise(F.col('update_col')))
df = df.withColumn('new_column_name', update_func)
列に対して何らかの操作を実行し、データフレームに追加される新しい列を作成する場合:
import pyspark.sql.functions as F
import pyspark.sql.types as T
def my_func(col):
do stuff to column here
return transformed_value
# if we assume that my_func returns a string
my_udf = F.UserDefinedFunction(my_func, T.StringType())
df = df.withColumn('new_column_name', my_udf('update_col'))
新しい列に古い列と同じ名前を付けたい場合は、追加の手順を追加できます。
df = df.drop('update_col').withColumnRenamed('new_column_name', 'update_col')