2016-11-19 4 views
0

パンダの背景から来て、私は簡単な操作でスパーク2.0.2(PySpark)と苦労しています。既存のデータフレームに新しい列を追加する方法。既存の列の最初の2文字が含まれます。理想的には、私が本質的に望むものは、明らかにSpark 2.0.2が理解できない明らかにSpark 2.0.2が理解できない、Spark 2.0.2データフレーム - 新しい列を追加する方法は、既存の列の最初の2文字で構成されていますか?

df.withColumn("new_column", col('FirstName')[:2]) 

です。

データソース

df = sqlContext.createDataFrame([("Ranjeet", 4, "California", 2), ("Anthony", 5, "Hawaii", 3), ("Diana", 6, "Singapore", 4)], ["FirstName", "Sales", "State", "Cost"]) 
df.show() 

試み#1

from pyspark.sql.functions import col 
df.withColumn("new_column", col('FirstName').map(lambda x: x[0][:2])) 

エラー:Columnオブジェクトは、呼び出すことはできません

Attemp#2 - 姓の最初の2つの文字を含む新しいデータフレームを作成し、どのように私はそれをdfにマージするのですか?

from pyspark.sql import Row 
row = Row("block_x") 
df.select('FirstName').rdd.map(lambda x: x[0][:2]).map(row).toDF().show() 

ありがとうございます。

シンプルで洗練されたソリューションをお探しですか?私はここで何かを逃しているかもしれません。

答えて

1

を使用できsubstring機能とwithColumn

from pyspark.sql.functions import substring 

df.withColumn("new_column", substring('FirstName', 0, 2)) 
関連する問題