2015-07-10 22 views

Trả lời

17

Một cách để đạt được điều đó là sử dụng withColumn phương pháp:

old_df = sqlContext.createDataFrame(sc.parallelize(
    [(0, 1), (1, 3), (2, 5)]), ('col_1', 'col_2')) 

new_df = old_df.withColumn('col_n', old_df.col_1 - old_df.col_2) 

Hoặc bạn có thể sử dụng SQL trên một bảng đăng ký:

old_df.registerTempTable('old_df') 
new_df = sqlContext.sql('SELECT *, col_1 - col_2 AS col_n FROM old_df') 
+0

Hey @ zero323, nếu tôi muốn tạo một cột tức là Col_1 là chuỗi và col_2 là chuỗi và tôi muốn column_n là tham gia của col_1 và Col_2. tức là Col_1 bằng 0 và cột_2 là 323. Cột thứ 3 phải là số 032? – Jason

+0

@Jason http://stackoverflow.com/a/31452109/1560062 – zero323

+0

Cảm ơn @ zero323. Mặc dù tôi có câu hỏi này: df.select (concat (col ("k"), lit (""), col ("v"))) Làm cách nào để tạo cột thứ ba ở đây? – Jason

3

Bên cạnh đó, chúng ta có thể sử dụng udf

from pyspark.sql.functions import udf,col 
from pyspark.sql.types import IntegerType 
from pyspark import SparkContext 
from pyspark.sql import SQLContext 

sc = SparkContext() 
sqlContext = SQLContext(sc) 
old_df = sqlContext.createDataFrame(sc.parallelize(
    [(0, 1), (1, 3), (2, 5)]), ('col_1', 'col_2')) 
function = udf(lambda col1, col2 : col1-col2, IntegerType()) 
new_df = old_df.withColumn('col_n',function(col('col_1'), col('col_2'))) 
new_df.show() 
Các vấn đề liên quan