2017-10-04 455 views
1

我有一個pyspark DataFrame,我想獲得一個特定的列並重復其值。例如:如何遍歷一個pyspark.sql.Column?

userId itemId 
1   2 
2   2 
3   7 
4   10 

我通過df.userId獲取用戶標識列和在此列的每個用戶id我想申請的方法。我怎樣才能做到這一點?

回答

0

您的問題對於您要應用的功能類型不是很具體,所以我創建了一個示例,其中添加了基於itemId的值的項目描述。

首先,讓我們導入相關的庫和創建數據:

from pyspark.sql.functions import udf 
from pyspark.sql.types import StringType 

df = spark.createDataFrame([(1,2),(2,2),(3,7),(4,10)], ['userId', 'itemId']) 

其次,創建函數,並將其轉換成一個UDF功能,可通過PySpark使用:

def item_description(itemId): 
    items = {2 : "iPhone 8", 
      7 : "Apple iMac", 
      10 : "iPad"} 
    return items[itemId] 

item_description_udf = udf(item_description,StringType()) 

最後,爲ItemDescription添加新列並使用item_description_udf函數返回的值填充它:

df = df.withColumn("ItemDescription",item_description_udf(df.itemId))  
df.show() 

這給出以下輸出:

+------+------+---------------+ 
|userId|itemId|ItemDescription| 
+------+------+---------------+ 
|  1|  2|  iPhone 8| 
|  2|  2|  iPhone 8| 
|  3|  7|  Apple iMac| 
|  4| 10|   iPad| 
+------+------+---------------+