簡體   English   中英

如何使用pyspark從數據框中過濾數據

[英]How to filter data from a dataframe using pyspark

我有一個名為 mytable 的表作為可用的數據框,下面是表

[+---+----+----+----+
|  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|
+---+----+----+----+]

我想要我們按 col x 分組並連接 col y,z,w 的結果的結果。 結果如下所示。

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

希望這可以幫助!

from pyspark.sql.functions import concat_ws, collect_list, concat, coalesce, lit

#sample data
df = sc.parallelize([
    [1, 'a', None, None],
    [1, None, 'b', None],
    [1, None, None, 'c'],
    [2, 'd', None, None],
    [2, None, 'e', None],
    [2, None, None, 'f']]).\
    toDF(('x', 'y', 'z', 'w'))
df.show()

result_df = df.groupby("x").\
               agg(concat_ws(' ', collect_list(concat(*[coalesce(c, lit("")) for c in df.columns[1:]]))).
                   alias('result'))
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|
+---+----+----+----+

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM