我正在與數據幀正在與以下結構 如何修改火花數據幀的一行中的列值?
在這裏,我需要修改每個記錄,這樣,如果列在post_event_list所列需要填充該列與對應post_column值。因此,在上述兩個記錄的示例中,我需要使用post_col4和post_col5值填充col4和col5。有人可以幫助我在pyspark做到這一點。
我正在與數據幀正在與以下結構 如何修改火花數據幀的一行中的列值?
在這裏,我需要修改每個記錄,這樣,如果列在post_event_list所列需要填充該列與對應post_column值。因此,在上述兩個記錄的示例中,我需要使用post_col4和post_col5值填充col4和col5。有人可以幫助我在pyspark做到這一點。
您可以在pyspark.sql.functions中使用when/otherwise。東西喜歡:
import pyspark.sql.functions as sf
from pyspark.sql.types import BooleanType
contains_col4_udf = udf(lambda x: 'col4' in x, BooleanType())
df.select(sf.when(contains_col4_udf('post_event_list'), sf.col('post_col4')).otherwise(sf.col('col_4')).alias('col_4'))
這裏是DOC:https://spark.apache.org/docs/1.6.2/api/python/pyspark.sql.html#pyspark.sql.Column.otherwise
也許這是你在pyspark2想要什麼
假設df是數據幀
row = df.rdd.first()
d = row.asDict()
d['col4'] = d['post_col4']
new_row = pyspark.sql.types.Row(**d)
現在我們有一個新的行目的;
把這些代碼放在map函數中可以幫助改變所有的df。
我想你需要''sf.udf()'' – muon