मेरे पास एक पाइस्पार्क डेटाफ्रेम कॉलम है जिसमें नीचे जैसा डेटा है।

Column 1
A1,A2
B1
C1,C2
D2

मुझे कॉमा के आधार पर कॉलम को 2 कॉलम में विभाजित करना है। आउटपुट नीचे जैसा होना चाहिए।

Column 1    Column 2
A1          A2
            B1
C1          C2
            D2

मैंने स्प्लिट () फ़ंक्शन का उपयोग करने की कोशिश की लेकिन मेरा बी 1 और डी 2 कॉलम 2 के बजाय कॉलम 1 में पॉप्युलेट हो रहा है। क्या उपरोक्त आउटपुट प्राप्त करने का कोई तरीका है?

1
Padfoot13288 11 अप्रैल 2020, 11:47

1 उत्तर

सबसे बढ़िया उत्तर

यहां split और आकार:

from pyspark.sql.functions import split, size, col, when

df.withColumn("ar", split(df["Column 1"], ",")) \
  .withColumn("Column 2", when(
                             size(col("ar")) == 1, col("ar")[0])
                             .otherwise(col("ar")[1])) \
  .withColumn("Column 1", when(size(col("ar")) == 2, col("ar")[0])) \
  .drop("ar") \
  .show()

# +--------+--------+
# |Column 1|Column 2|
# +--------+--------+
# |      A1|      A2|
# |    null|      B1|
# |      C1|      C2|
# |    null|      D2|
# +--------+--------+

पहले हम Column 1 को अल्पविराम से विभाजित करते हैं फिर हम सरणी के आइटम को सशर्त रूप से एक्सेस करते हैं।

4
abiratsis 11 अप्रैल 2020, 11:28