Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从Pyspark中的多列获取值_Python_Pyspark - Fatal编程技术网

Python 从Pyspark中的多列获取值

Python 从Pyspark中的多列获取值,python,pyspark,Python,Pyspark,请看一下输入和预期输出,并建议我在Pyspark中处理它的有效方法 输入:带有 C1 x y 11 a 1 12 a 2 13 b 5 14 b 6 16 c &b 17 c 7 18 c b 当C1、x和y为列时 预期产出: C1 x y z 11 a 1 [1] 12 a 2 [2] 13 b 5 [5] 14 b 6 [6] 16 c &b [5,6] 17 c 7 [7]

请看一下输入和预期输出,并建议我在Pyspark中处理它的有效方法

输入:带有

C1 x y  
11 a  1  
12 a  2  
13 b  5  
14 b  6  
16 c  &b  
17 c  7  
18 c  b  
当C1、x和y为列时

预期产出:

C1 x  y  z  
11 a  1  [1]  
12 a  2  [2]  
13 b  5  [5]  
14 b  6  [6]  
16 c  &b [5,6]  
17 c  7  [7]  
18 c  b  [5,6]  
“z”是预期的列,它应该在其中为“c”获取相应的“b”值

对于'c'而言,第五行的b和b的价格应为[5,6]


提前感谢尝试此功能,
使用
上进行自连接

df.show() #sampledataframe

#+---+---+---+
#| C1|  x|  y|
#+---+---+---+
#| 11|  a|  1|
#| 12|  a|  2|
#| 15|  b|  5|
#| 16|  b|  6|
#| 17|  c| &b|
#| 17|  c|  7|
#| 18|  c|  b|
#+---+---+---+

df.join(df.groupBy("x").agg(F.collect_list("y").alias("y1"))\
          .withColumnRenamed("x","x1"),F.expr("""y rlike x1"""),'left')\
  .withColumn("z", F.when(F.col("y").cast("int").isNotNull(), F.array("y"))\
                    .otherwise(F.col("y1"))).drop("x1","y1").show()

#+---+---+---+------+
#| C1|  x|  y|     z|
#+---+---+---+------+
#| 11|  a|  1|   [1]|
#| 12|  a|  2|   [2]|
#| 15|  b|  5|   [5]|
#| 16|  b|  6|   [6]|
#| 17|  c| &b|[5, 6]|
#| 17|  c|  7|   [7]|
#| 18|  c|  b|[5, 6]|
#+---+---+---+------+