Python 如何使用pyspark从数据帧筛选数据

Python 如何使用pyspark从数据帧筛选数据,python,apache-spark,pyspark,spark-dataframe,Python,Apache Spark,Pyspark,Spark Dataframe,我有一个名为mytable作为dataframe的表,下面是该表 [+---+----+----+----+ | x| y| z| w| +---+----+----+----+ | 1| a|null|null| | 1|null| b|null| | 1|null|null| c| | 2| d|null|null| | 2|null| e|null| | 2|null|null| f| +---+----+----+----+] [+--

我有一个名为mytable作为dataframe的表,下面是该表

[+---+----+----+----+ | x| y| z| w| +---+----+----+----+ | 1| a|null|null| | 1|null| b|null| | 1|null|null| c| | 2| d|null|null| | 2|null| e|null| | 2|null|null| f| +---+----+----+----+] [+---+----+----+----+ |x | y | z | w | +---+----+----+----+ |1 | a | null | null| |1 |空| b |空| |1 |零|零| c| |2 | d | null | null| |2 |空| e |空| |2 |零|零| f| +---+----+----+----+] 我想要的结果是,我们按x列分组,并将y,z,w列的结果连接起来。结果如下所示

[+---+----+----+- | x| result| +---+----+----+ | 1| a b c | | 2| d e f | +---+----+---+| [+---+----+----+- |x |结果| +---+----+----+ |1 | a b c| |2 | d e f| +---+----+---+|

希望这能有所帮助

从pyspark.sql.functions导入concat\u ws、collect\u list、concat、coalesce、lit
#样本数据
df=sc.parallelize([
[1,‘a’,无,无],
[1,无,'b',无],
[1,无,无,'c'],
[2,'d',无,无],
[2,无,'e',无],
[2,无,无,'f']])\
toDF(('x','y','z','w'))
df.show()
结果_df=df.groupby(“x”)\
agg(concat_ws(“”,collect_list(concat(*[coalesce(c,lit(“”))表示df.columns[1:]]中的c)。
别名('result'))
结果_df.show()
输出为:

+---+------+
|  x|result|
+---+------+
|  1| a b c|
|  2| d e f|
+---+------+
样本输入:

+---+----+----+----+
|  x|   y|   z|   w|
+---+----+----+----+
|  1|   a|null|null|
|  1|null|   b|null|
|  1|null|null|   c|
|  2|   d|null|null|
|  2|null|   e|null|
|  2|null|null|   f|
+---+----+----+----+
@阿曼如果它能帮助你解决问题,你也许应该这样做,这样问题就可以被认为是完结了。