pyspark 如果id每天都被重置为1,并且必须与其他列连接,如何创建一个新的索引列?

7bsow1i6  于 2023-01-04  发布在  Spark
关注(0)|答案(2)|浏览(104)

我有这样一个数据
| 发送标识|发送日期|产品标识|
| - ------|- ------|- ------|
| 1个|2023年1月4日|三个|
| 1个|2023年1月4日|五个|
| 第二章|2023年1月4日|三个|
| 三个|2023年1月4日|1个|
| 四个|2023年1月4日|1个|
| 四个|2023年1月4日|五个|
| 1个|二〇二三年一月五日|五个|
| 1个|二〇二三年一月五日|1个|
| 第二章|二〇二三年一月五日|四个|
| 第二章|二〇二三年一月五日|六个|
| 三个|二〇二三年一月五日|1个|
列的快速解释
tx_id是事务ID
tx_date是事务处理日期
product_id是产品ID
此处数据的行为是,如果日期发生变化,则tx_id将重置为1
我期待通过使用pyspark / pandas将数据更新为这样
快速浏览一下新身份证号码4和5
| 身份证|发送标识|发送日期|产品标识|
| - ------|- ------|- ------|- ------|
| 1个|1个|2023年1月4日|三个|
| 1个|1个|2023年1月4日|五个|
| 第二章|第二章|2023年1月4日|三个|
| 三个|三个|2023年1月4日|1个|
| 四个|四个|2023年1月4日|1个|
| 四个|四个|2023年1月4日|五个|
| 五个|1个|二〇二三年一月五日|五个|
| 五个|1个|二〇二三年一月五日|1个|
| 六个|第二章|二〇二三年一月五日|四个|
| 六个|第二章|二〇二三年一月五日|六个|
| 七|三个|二〇二三年一月五日|1个|
快速解释一下我所期待的是如何创建一个新的id列,该列的索引基于tx_id、tx_date和product_id

bq8i3lrv

bq8i3lrv1#

如果索引的唯一性是您主要关心的问题,那么重置整个 Dataframe 索引会很有帮助。

df=df.reset_index(drop=True)
y1aodyip

y1aodyip2#

这将工作(在pyspark中):

df.withColumn("new_id", F.dense_rank().over(Window.orderBy(col("tx_date"), col("tx_id")))).show()

相关问题