2016-03-08 15 views
6

Có hai cột:ma trận pyspark với biến giả

ID Text 
1 a 
2 b 
3 c 

Làm thế nào tôi có thể có thể tạo ra ma trận với biến giả như thế này:

ID a b c 
1 1 0 0 
2 0 1 0 
3 0 0 1 

Sử dụng thư viện pyspark và các tính năng của nó?

Trả lời

5
from pyspark.sql import functions as F 

df = sqlContext.createDataFrame([ 
    (1, "a"), 
    (2, "b"), 
    (3, "c"), 
], ["ID", "Text"]) 

categories = df.select("Text").distinct().rdd.flatMap(lambda x: x).collect() 

exprs = [F.when(F.col("Text") == category, 1).otherwise(0).alias(category) 
     for category in categories] 

df.select("ID", *exprs).show() 

Output

+---+---+---+---+ 
| ID| a| b| c| 
+---+---+---+---+ 
| 1| 1| 0| 0| 
| 2| 0| 1| 0| 
| 3| 0| 0| 1| 
+---+---+---+---+ 
+0

Traceback (gần đây nhất gọi cuối cùng): File "", dòng 2, trong NameError: Tên 'F' không được định nghĩa –

+1

F là gì đây? –

+1

từ chức năng nhập pyspark.sql là F –

Các vấn đề liên quan