1
我有一個pyspark DataFrame,我想獲得一個特定的列並重復其值。例如:如何遍歷一個pyspark.sql.Column?
userId itemId
1 2
2 2
3 7
4 10
我通過df.userId
獲取用戶標識列和在此列的每個用戶id我想申請的方法。我怎樣才能做到這一點?
我有一個pyspark DataFrame,我想獲得一個特定的列並重復其值。例如:如何遍歷一個pyspark.sql.Column?
userId itemId
1 2
2 2
3 7
4 10
我通過df.userId
獲取用戶標識列和在此列的每個用戶id我想申請的方法。我怎樣才能做到這一點?
您的問題對於您要應用的功能類型不是很具體,所以我創建了一個示例,其中添加了基於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|
+------+------+---------------+