pyspark - 识别 pyspark 中第一次出现的列值,然后根据它增加另一列
问题描述
当我在 pyspark 中遇到新的客户 ID 时,我试图增加一列 我的 pyspark 数据框(类型 - pyspark.sql.dataframe.DataFrame)有 2 列 Customer_id 101 101 102 103 103 103 每当新的 Customer_ID 标志值重置为1 并在遇到相同 id 时递增。我想要以下输出数据框
Customer_id Flag
101 1
101 2
102 1
103 1
103 2
103 3
解决方案
在列上使用window
子句row_number()
函数partitionBy
customer_id
from pyspark.sql.functions import *
from pyspark.sql import Window
w = Window.partitionBy("customer_id").orderBy(lit("1"))
df1=df.withColumn("Flag",row_number().over(w))
df1.show()
#+-----------+----+
#|customer_id|Flag|
#+-----------+----+
#| 101| 1|
#| 101| 2|
#| 102| 1|
#| 103| 1|
#| 103| 2|
#| 103| 3|
#+-----------+----+
推荐阅读
- java - 如何在 sim toolkit 小程序中触发 EVENT_FORMATTED_SMS_PP_ENV?
- python - 无法弄清楚为什么我的代码不适用于特定情况(来自 Leetcode 的硬币更改)
- python - Python Django 奇怪地映射到意外的 URL
- c# - c#过滤后如何获取DataGridView的DataSet
- javascript - “类型 {} 上不存在属性 json”TypeScript
- javascript - 服务人员错误的缓存文件
- python - QHBoxLayout 以不同的顺序添加小部件
- github-pages - 在 GitHub Pages 上托管 LaTeX 生成的 PDF
- linux - 关闭 Linux 操作系统后 ClickHouse 连接被拒绝(错误代码:210。DB::NetException:连接被拒绝)
- java - 对 REST API 类感到困惑