簡體   English   中英

Pyspark DataFrame 計算另一列中某列值的出現次數

[英]Pyspark DataFrame count occurrences of value of a column in an other column

我得到了一個數據框,其中包括:

+--------------------+--------------------+-------------+
|                 src|                 dst|linkage_count|
+--------------------+--------------------+-------------+
|             abc.com|        _spf.a22.biz|            0|
|             abc.com|     _spf.google.com|            0|
|     _spf.google.com|        _spf.mail.ru|            0|
+--------------------+--------------------+-------------+

現在我想遍歷每一行並獲取“dst”列的值,並在“src”列中找到該“dst”值的出現次數並將其添加到“linkage_count”列中。 所以在這種情況下,結果應該是:

+--------------------+--------------------+-------------+
|                 src|                 dst|linkage_count|
+--------------------+--------------------+-------------+
|             abc.com|        _spf.a22.biz|            0|
|             abc.com|     _spf.google.com|            1|
|     _spf.google.com|        _spf.mail.ru|            0|
+--------------------+--------------------+-------------+

使用自連接的一種方法:

df.alias("l").join(df.alias("r"), col("l.dst") == col("r.src"), "left")\
             .groupBy("l.src", "l.dst")\
             .agg((count("r.src") + first("l.linkage_count")).alias("linkage_count"))\
             .show()

我們在dst == src上使用左連接並計算添加到linkage_count列的匹配數。

給出:

+---------------+---------------+-------------+
|            src|            dst|linkage_count|
+---------------+---------------+-------------+
|        abc.com|   _spf.a22.biz|            0|
|_spf.google.com|   _spf.mail.ru|            0|
|        abc.com|_spf.google.com|            1|
+---------------+---------------+-------------+

暫無
暫無

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

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