2015-10-26 17 views
5

Giả sử tôi có một DataFrame x với schema này:Đúc một cột có nguồn gốc mới trong một DataFrame từ boolean để nguyên

xSchema = StructType([ \ 
    StructField("a", DoubleType(), True), \ 
    StructField("b", DoubleType(), True), \ 
    StructField("c", DoubleType(), True)]) 

sau đó tôi có DataFrame:

DataFrame[a :double, b:double, c:double] 

Tôi muốn có một cột có nguồn gốc số nguyên. Tôi có thể tạo ra một cột boolean:

x = x.withColumn('y', (x.a-x.b)/x.c > 1) 

schema mới của tôi là:

DataFrame[a :double, b:double, c:double, y: boolean] 

Tuy nhiên, tôi muốn cột y chứa 0 cho False và 1 cho True.

Chức năng cast chỉ có thể hoạt động trên một cột chứ không phải là DataFrame và chức năng withColumn chỉ có thể hoạt động trên DataFrame. Làm thế nào để tôi thêm một cột mới và đúc nó vào số nguyên cùng một lúc?

Trả lời

6

Biểu hiện bạn sử dụng để đánh giá cột, do đó bạn có thể cast trực tiếp như thế này:

x.withColumn('y', ((x.a-x.b)/x.c > 1).cast('integer')) # Or IntegerType() 
Các vấn đề liên quan