You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Databricks中使用PySpark新增列标记高频退货客户

PySpark(Databricks平台)实现客户退货行为统计与标记

实现思路

  • 按customerID分组聚合,统计每个客户的总退货次数、总购买订单数
  • 自定义「经常退货」判定规则(支持按绝对退货次数/退货率两种逻辑),使用when函数新增标记列

完整代码示例

from pyspark.sql import functions as F

# 1. 分组统计每个客户的退货相关指标
customer_return_stats = train.groupBy("customerID") \
    .agg(
        F.sum("returnShipment").alias("total_return_cnt"),  # 统计总退货次数
        F.count("itemID").alias("total_order_cnt")        # 统计总购买订单数
    )

# 2. 新增「经常退货客户」标记,两种规则二选一即可
# 规则1:按绝对退货次数判定,例:退货次数≥3即为经常退货
result = customer_return_stats.withColumn(
    "is_frequent_return",
    F.when(F.col("total_return_cnt") >= 3, "是").otherwise("否")
)

# 规则2:按退货率判定,例:退货率≥30%即为经常退货
# result = customer_return_stats.withColumn(
#     "return_rate",
#     F.round(F.col("total_return_cnt") / F.col("total_order_cnt"), 2)
# ).withColumn(
#     "is_frequent_return",
#     F.when(F.col("return_rate") >= 0.3, "是").otherwise("否")
# )

# 查看最终结果
result.show()

测试数据输出样例

使用规则1(退货次数≥3判定为经常退货),对应你提供的测试数据输出如下:

+----------+----------------+---------------+------------------+
|customerID|total_return_cnt|total_order_cnt|is_frequent_return|
+----------+----------------+---------------+------------------+
|       794|               2|              3|                 否|
|       850|               7|              7|                 是|
+----------+----------------+---------------+------------------+

自定义调整说明

  • 可修改when条件中的阈值,适配自身业务对「经常退货」的定义
  • 标记值也可根据需求替换为布尔值True/False或者数字编码1/0

内容的提问来源于stack exchange,提问作者JAdel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 05:54:03