Pyspark 1.6: DataFrame:將一列從字符串轉換成浮點數/雙
我有兩個列在裝載dataframe這兩個字符串。
DF = rawdata。選擇(“房子的名字”,“價格”)
我想把DF。價格浮動。
DF = rawdata。選擇(房子的名字,浮子(“價格”))#沒有工作
DF (DF。價格=浮動(DF.price) #沒有工作
DF。價格= DF.price.astype(浮動)#熊貓像腳本並不奏效
請幫助將它Dataframe嗎?
我知道如何將抽樣:DF。地圖(λx:浮動(x.price)
但是,我想在Dataframe做所有的轉換。
注意:我沒有相同的Beplay体育安卓版本接口平台Databrick平台,你可以改變列類型在加載該文件。
的
投
函數可以將指定的列轉換為不同的數據類型。你不應該需要一個UDF。如果rawdata DataFrame,這應該工作:
https://spark.apache.org/docs/latest/api/python/pyspark.sql.html pyspark.sql.Column.cast
df = rawdata。選擇(坳(房子的名字),rawdata.price.cast(浮動).alias(“價格”))
我固定它,如下所示:
從pyspark.sql。功能導入udf
從pyspark.sql。類型進口StringType
def string_to_float (x):
返回浮點數(x)
udfstring_to_float = udf (string_to_float StringType ())
rawdata.withColumn(“名字”,udfstring_to_float (“numberfloat”))
[8]:DataFrame[名稱:字符串,number_int: int, numberfloat:雙)
謝謝你的建議。對不起,它沒有工作。
從pyspark.sql。功能導入udf
sqlContext.udf。注冊(“浮動”,λx:浮動(x))
從pyspark.sql。進口expr函數
DF = rawdata。選擇(“名字”,expr(浮動(numberfloat)))
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ValueError回溯(最近調用最後)
< ipython -輸入- 13 - 243 - d7c9f050e >在<模塊> ()
從pyspark.sql 4。功能導入世博會
5 - - - - - >
6 df = rawdata。選擇(“名字”,expr(浮動(numberfloat)))
ValueError:不能將字符串轉換成浮點數:numberfloat