python - Pyspark:从特定值开始自动递增
问题描述
我需要在我的数据框中添加一列,该列将递增 1,但从 500 开始。所以第一行是 500,第二行是 501,依此类推。使用 UDF 没有意义,因为它可以在不同的工人,我不知道任何将起始值作为参数的函数。我也没有任何东西可以对我的数据框进行排序。默认情况下,行号和自动增量都将从 1 开始。我相信我可以做到,但将我的 df 转换为 rdd 并返回 df 似乎是一个非常丑陋的解决方案。你知道任何现有的函数可以帮助我在数据帧级别上解决问题吗?
谢谢!
解决方案
由于monotonically_increasing_id()
不是连续的,您可以使用row_num()
overmonotonically_increasing_id()
并添加 499。
from pyspark.sql.window import Window
df = df.withColumn("idx", monotonically_increasing_id())
w = Window().orderBy("idx")
df.withColumn("row_num", (499 + row_number().over(w))).show()
推荐阅读
- c# - UWP MVVM Observablecollection 已更新但未反映在 UI 上
- python - 将平面查询结果转换为更明确的表结构
- java - 更新缓存正在更新我的数据库字段。如何限制它。我在 java 中使用番石榴
- javascript - 在 js 中使用 window.location 重定向时未设置引用标头
- visual-studio-code - 如何阻止 VS Code 在按 Enter 时自动选择第一个建议?
- java - 如何在java中删除附加的字符串
- javascript - 覆盖数据而不生成新的密钥/节点
- php - Catalina os 上缺少 php 7.1 的扩展
- javascript - 我们可以将 Angular FormArray 与 angular2-multiselect 下拉列表一起使用吗?
- c# - [UWP][C#]有没有办法获取 Windows.UI.Xaml.Shapes.Rectangle 的坐标(左、顶点)?