python स्ट्रिंग प्रकार से डेटा प्रकार कॉलम को pyspark में डबल टाइप में कैसे बदलें




apache-spark apache-spark-1.4 (4)

मेरे पास कॉलिंग के साथ स्ट्रिंग के रूप में डेटाफ्रेम है। मैं स्तंभ प्रकार को डबल प्रकार में pyspark में बदलना चाहता था।

निम्नलिखित तरीका है, मैंने किया, -

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

बस जानना चाहता था, क्या लॉजिस्टिक रिग्रेशन के माध्यम से चलने के दौरान यह करने का यह सही तरीका है, मुझे कुछ त्रुटि मिल रही है, इसलिए मुझे आश्चर्य है, क्या यह समस्या का कारण है।


समाधान सरल था -

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

दिए गए उत्तरों समस्या से निपटने के लिए पर्याप्त हैं लेकिन मैं एक और तरीका साझा करना चाहता हूं जिसे स्पार्क का नया संस्करण पेश किया जा सकता है (मुझे इसके बारे में निश्चित नहीं है) इसलिए दिए गए उत्तर ने इसे पकड़ नहीं लिया।

हम col("colum_name") कीवर्ड के साथ स्पार्क स्टेटमेंट में कॉलम तक पहुंच सकते हैं:

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

कॉलम के नाम को सुरक्षित रखें और इनपुट कॉलम के समान नाम का उपयोग करके अतिरिक्त कॉलम अतिरिक्त से बचें:

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

यहां यूडीएफ की कोई आवश्यकता नहीं है। Column पहले से ही DataType उदाहरण के साथ cast विधि प्रदान करता है:

from pyspark.sql.types import DoubleType

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

या छोटी स्ट्रिंग:

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




apache-spark-1.4