簡體   English   中英

如何修改spark數據幀的一行中的列值?

[英]How to modify a column value in a row of a spark dataframe?

我正在使用具有以下結構的數據框架 在此輸入圖像描述

在這里,我需要修改每條記錄,以便如果post_event_list中列出了一列,我需要使用相應的post_column值填充該列。 因此,在上述兩個記錄的示例中,我需要使用post_col4和post_col5值填充col4和col5。 有人可以幫我在pyspark做這個。

也許這就是你想要的pyspark2

假設df是DataFrame

row = df.rdd.first()

d = row.asDict()
d['col4'] = d['post_col4']
new_row = pyspark.sql.types.Row(**d) 

現在我們有一個新的Row對象;

把這些代碼放在一個map函數中可以幫助改變所有的df。

您可以在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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM