मेरे पास एक PySpark सेटिंग में डेटाफ़्रेम df है। मैं एक कॉलम बदलना चाहता हूं, कहें कि इसे ए कहा जाता है, जिसका डेटाटाइप "string" है। मैं इसके मूल्यों को उनकी लंबाई के अनुसार बदलना चाहता हूं। विशेष रूप से, यदि एक पंक्ति में हमारे पास केवल एक वर्ण है, तो हम 0 को अंत तक जोड़ना चाहते हैं। अन्यथा, हम डिफ़ॉल्ट मान लेते हैं। "संशोधित" कॉलम का नाम अभी भी ए होना चाहिए। यह एक ज्यूपिटर नोटबुक के लिए है जो PySpark3 का उपयोग कर रहा है।

मैंने अब तक यही कोशिश की है:

df = df.withColumn("A", when(size(df.col("A")) == 1, concat(df.col("A"), lit("0"))).otherwise(df.col("A")))

मैंने उसी कोड को "df.col" को हटाने का भी प्रयास किया।

जब मैं इस कोड को चलाता हूं, तो सॉफ्टवेयर यह कहते हुए शिकायत करता है कि सिंटैक्स अमान्य है, लेकिन मुझे त्रुटि दिखाई नहीं दे रही है।

1
WorkBench 17 जून 2019, 13:51

1 उत्तर

सबसे बढ़िया उत्तर
df.withColumn("temp", when(length(df.A) == 1, concat(df.A, lit("0"))).\
otherwise(df.A)).drop("A").withColumnRenamed('temp', 'A')

आपके प्रश्न को पढ़ने के बाद मुझे जो समझ में आया, वह यह था कि आपको एक अतिरिक्त कॉलम A मिल रहा है।

तो आप चाहते हैं कि पुराने कॉलम ए को नए कॉलम ए से बदल दिया जाए। इसलिए मैंने आपके आवश्यक तर्क के साथ एक अस्थायी कॉलम बनाया, फिर कॉलम ए को हटा दिया और फिर अस्थायी कॉलम को ए में बदल दिया।

0
kiran gali 17 जून 2019, 17:30