कस्टम स्थिति के अंदर .withColumn में लिखना
Nov 23 2020
मुझे एक अनुकूलित स्थिति मिलानी होगी, जिसमें .withColumn में कई कॉलम हों। मेरा परिदृश्य कुछ इस तरह है। मुझे कई कॉलम पंक्ति की जाँच करनी है यदि उनके पास शून्य मान हैं, और उन कॉलम नामों को एक नए कॉलम में जोड़ें। मेरा कोड कुछ इस तरह दिखता है:
df= df.withColumn("MissingColumns",\
array(\
when(col("firstName").isNull(),lit("firstName")),\
when(col("salary").isNull(),lit("salary"))))
समस्या यह है कि मेरे पास कई कॉलम हैं जिन्हें मुझे शर्त में जोड़ना होगा। इसलिए मैंने इसे लूप और एफ-स्ट्रिंग्स का उपयोग करके अनुकूलित करने का प्रयास किया और इसका उपयोग करने की कोशिश की।
df = df.withColumn("MissingColumns",condition)
लेकिन यह शर्त काम नहीं कर रही है। हो सकता है क्योंकि, मैंने जो शर्त लिखी है वह डेटा टाइप स्ट्रिंग की है। क्या ऐसा करने का कोई कुशल तरीका है?
जवाब
1 BenoitDescamps Nov 23 2020 at 15:24
आपको अपनी सूची को सरणी के अंदर अनपैक करने की आवश्यकता है:
columns = ["firstName","salary"]
condition = array(*[when(col(c).isNull(),lit(c)) for c in columns])