2015-08-29 15 views
25

Dize olarak sütun içeren bir veri çerçevem ​​var. Pyspark'ta kolon tipini Double type olarak değiştirmek istedim. TakipBir Dataframe sütunu pyspark'ta Dize türünden Çift türüne nasıl değiştirilir

, benim yaptığım yoludur -

toDoublefunc = UserDefinedFunction(lambda x: x,DoubleType()) 
changedTypedf = joindf.withColumn("label",toDoublefunc(joindf['show'])) 

Sadece bilmek istedim, bu Lojistik Regresyon aracılığıyla çalışırken olarak, bazı hata alıyorum bunu yapmak için doğru yolu, bu yüzden Acaba, bu sorunun nedeni 'dur.

cevap

47

burada bir UDF gerek yoktur. Column zaten DataType örneği ile cast method sağlamaktadır:

from pyspark.sql.types import DoubleType 

changedTypedf = joindf.withColumn("label", joindf["show"].cast(DoubleType())) 

veya kısa dize:

changedTypedf = joindf.withColumn("label", joindf["show"].cast("double")) 
1

çözüm basitti -

toDoublefunc = UserDefinedFunction(lambda x: float(x),DoubleType()) 
changedTypedf = joindf.withColumn("label",toDoublefunc(joindf['show'])) 
21

sütunun adını koru ve giriş sütunu ile aynı adı kullanarak ekstra kolon eklenmesini önlemek:

changedTypedf = joindf.withColumn("show", joindf["show"].cast(DoubleType())) 
+2

Teşekkür Ben orijinal sütun adı – javadba

+0

korumak için nasıl arıyordu bir liste belirleyecektir yerde kısa dize veri türleri Spark var mı? – alfredox

0

Verilen cevaplar, sorunla başa çıkmak için yeterlidir, ancak yeni sürümü o eklenebilir başka bir şekilde paylaşmak istiyorum f Kıvılcım (Bu konuda emin değilim) verilen cevap onu yakalamadı.

Biz col("colum_name") anahtar kelime ile kıvılcım açıklamada sütunu ulaşabilirsiniz:

from pyspark.sql.functions import col , column 
changedTypedf = joindf.withColumn("show", col("show".cast("double")) 
+0

Bir hata mesajım var: 'str' nesnesi "cast" özelliğine sahip değil – Jie