पिसपार्क: पाइप से अलग किए गए कॉलम को कई पंक्तियों में कैसे विभाजित किया जाए? [डुप्लिकेट]

Aug 18 2020

मेरे पास एक डेटाफ्रेम है जिसमें निम्नलिखित शामिल हैं:

movieId / movieName / genre
1         example1    action|thriller|romance
2         example2    fantastic|action

मैं दूसरा डेटाफ़्रेम (पहले एक से) प्राप्त करना चाहूंगा, जिसमें निम्नलिखित शामिल हैं:

movieId / movieName / genre
1         example1    action
1         example1    thriller
1         example1    romance
2         example2    fantastic
2         example2    action

हम इसे pyspark का उपयोग कैसे कर सकते हैं?

जवाब

1 Shu Aug 18 2020 at 08:41

उपयोग splitफ़ंक्शन सरणी पर एक arrayतत्कालीन explodeफ़ंक्शन लौटाएगा ।

Example:

df.show(10,False)
#+-------+---------+-----------------------+
#|movieid|moviename|genre                  |
#+-------+---------+-----------------------+
#|1      |example1 |action|thriller|romance|
#+-------+---------+-----------------------+

from pyspark.sql.functions import *

df.withColumnRenamed("genre","genre1").\
withColumn("genre",explode(split(col("genre1"),'\\|'))).\
drop("genre1").\
show()
#+-------+---------+--------+
#|movieid|moviename|   genre|
#+-------+---------+--------+
#|      1| example1|  action|
#|      1| example1|thriller|
#|      1| example1| romance|
#+-------+---------+--------+