簡體   English   中英

使用pySpark中第二列的值對行進行轉置

[英]Row transpose with value from a second column in pySpark

我有一個帶有4列(C1,C2,C3和C4)的pySpark數據框。 在第三列(C3)中,我具有分類值,例如V1,V2,V3;在第四列(C4)中,我具有其相應的數值。 我正在嘗試添加其他列V1,V2和V3,其中這些新列的值應來自第四列(C4)的對應行

我能夠通過UDFDF.withColumn將行轉置為列,但無法帶來值

def valTocat(C3):
if C3 == 'xyz':
    return 1
else:
    return 0

但以下內容不起作用

def valTocat((C3, C4)):
if C3 == 'xyz':
    return C4
else:
    return 0

我無法以某種方式發布數據的表格格式,但我認為它很容易可視化。

一些建議將不勝感激

您可以嘗試DataFrame pivot()您的DataFrame

from pyspark.sql.functions import expr

df.groupBy("c1","c2") \
 .pivot("c3") \
 .agg(expr("coalesce(first(c4))")).show()

您需要函數coalesce以用null代替缺少的值。

暫無
暫無

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

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