0
來自熊貓的背景,我正在用Spark 2.0.2(PySpark)進行簡單的操作。如何將新列添加到現有數據框中,該數據框包含現有列的前兩個字符。理想情況下,我想要的基本上是Spark 2.0.2數據框 - 如何添加一個新列,包含現有列的前兩個字符?
df.withColumn("new_column", col('FirstName')[:2])
明顯Spark 2.0.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]))
錯誤:柱對象不是可調用
學嘗試#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()
謝謝你的時間。
尋找一個簡單而優雅的解決方案。可能是我在這裏失去了一些東西。