我有以下資料框:
| 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 上做到這一點?
uj5u.com熱心網友回復:
您可以使用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|
# --- ------------------- ------------
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/345672.html
