[英]How to filter certain percentage of data from a dataframe using 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.