【问题标题】:How do I count based on different rows conditions in PySpark?如何根据 PySpark 中的不同行条件进行计数?
【发布时间】:2021-10-28 01:25:00
【问题描述】:

我有以下数据框:

ID Payment Value Date
1 Cash 200 2020-01-01
1 Credit Card 500 2020-01-06
2 Cash 300 2020-02-01
3 Credit Card 400 2020-02-02
3 Credit Card 500 2020-01-03
3 Cash 200 2020-01-04

我想做的是统计有多少人同时使用了现金和信用卡。

例如,在这种情况下,会有 2 个 ID 同时使用现金和信用卡。

我将如何在 PySpark 上做到这一点?

【问题讨论】:

    标签: python apache-spark pyspark


    【解决方案1】:

    您可以使用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|
    # +---+-------------------+------------+
    

    【讨论】:

      猜你喜欢
      • 2018-08-07
      • 1970-01-01
      • 1970-01-01
      • 2021-08-30
      • 1970-01-01
      • 2021-11-26
      • 1970-01-01
      • 2020-11-17
      • 2019-05-29
      相关资源
      最近更新 更多