簡體   English   中英

如何根據 PySpark 中的不同行條件進行計數?

[英]How do I count based on different rows conditions in PySpark?

我有以下數據框:

ID 支付 價值 日期
1 現金 200 2020-01-01
1 信用卡 500 2020-01-06
2 現金 300 2020-02-01
3 信用卡 400 2020-02-02
3 信用卡 500 2020-01-03
3 現金 200 2020-01-04

我想做的是計算有多少身份證同時使用了現金和信用卡。

例如,在這種情況下,將有 2 個同時使用現金和信用卡的 ID。

我將如何在 PySpark 上做到這一點?

您可以使用collect_set來計算每個用戶有多少種付款方式。

from pyspark.sql import functions as F

(df
    .groupBy('ID')
    .agg(F.collect_set('Payment').alias('methods'))
    .withColumn('methods_size', F.size('methods'))
    .show()
)

# +---+-------------------+------------+
# | ID|            methods|methods_size|
# +---+-------------------+------------+
# |  1|[Credit Card, Cash]|           2|
# |  3|[Credit Card, Cash]|           2|
# |  2|             [Cash]|           1|
# +---+-------------------+------------+

暫無
暫無

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

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