Pyspark 向数据帧添加顺序和确定性索引

2023-12-02

我需要向数据帧添加一个索引列,并具有三个非常简单的约束:

  • 从0开始

  • 是连续的

  • 具有确定性

我确信我错过了一些明显的东西,因为我发现的例子对于这样一个简单的任务来说看起来非常复杂,或者使用非顺序、非确定性越来越单调的 id。我不想使用索引进行压缩,然后必须将以前分隔的列分开,这些列现在位于单个列中,因为我的数据帧以 TB 为单位,这似乎没有必要。我不需要按任何内容进行分区,也不需要按任何内容进行排序,我找到的示例就是这样做的(使用窗口函数和 row_number)。我需要的只是一个简单的 0 到 df.count 整数序列。我在这里缺少什么?

1, 2, 3, 4, 5


我的意思是:如何添加一个具有有序、单调递增 1 序列 0:df.count 的列?(来自评论)

您可以使用row_number()在这里,但为此你需要指定一个orderBy()。由于您没有排序列,因此只需使用monotonically_increasing_id().

from pyspark.sql.functions import row_number, monotonically_increasing_id
from pyspark.sql import Window

df = df.withColumn(
    "index",
    row_number().over(Window.orderBy(monotonically_increasing_id()))-1
)

Also, row_number()从 1 开始,所以你必须减去 1 才能从 0 开始。最后一个值是df.count - 1.


我不想使用索引进行压缩,然后必须将以前分隔的列分开,这些列现在位于单个列中

You can use zipWithIndex如果你按照它打电话map,以避免所有分离的列变成单个列:

cols = df.columns
df = df.rdd.zipWithIndex().map(lambda row: (row[1],) + tuple(row[0])).toDF(["index"] + cols
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pyspark 向数据帧添加顺序和确定性索引 的相关文章

随机推荐

  • 如何为 Django 中的某一类别创建链接

    我正在编写一个新闻网站 我在新闻模型中有 类别 我想获取 index html 中名为 意见 的类别之一中的所有新闻 并为每个人创建详细信息页面链接 我可以知道上面提到的新闻的标题 作者等 但是我的大脑真的很垃圾 我不知道如何为每个新闻创建
  • 在子图的情况下,如何为所有 x 轴和 y 轴使用通用标签?

    我使用以下循环来获取子图 for j 1 19 Aj B j subplot 5 4 j plot Aj h end 对于所有这些子图 我只需要一个 x 标签和一个 y 标签 这个怎么做 另外如何将图例插入到所有子图中 您可以使用supla
  • Oracle 中相当于 SQL Server 的 IsNull() 函数的是什么?

    在 SQL Server 中我们可以输入IsNull 确定字段是否为空 PL SQL 中有等效的函数吗 coalesceOracle 和 SQL Server 均受支持 其功能与nvl and isnull 有一些重要的区别 coalesc
  • 如何解析SVG元素的viewBox x、y、宽度和高度值?

    假设我有一个 SVG 元素
  • PySide/PyQt4:向 QTableWidget 水平(列)标题添加复选框

    我试图在 qtablewidget 的水平 列 标题中放置一个复选框 基于其他帖子here 因为基本对象类型是相同的 我尝试过 item QtGui QTableWidgetItem item setCheckState QtCore Qt
  • Spring 和 Ajax

    我可以将 Spring 表单标签库与 Ajax 结合使用吗 我无法检索控制器内的表单输入参数 他们总是null 实际上有一个逻辑 就是表单永远不会被提交 但随后我只能将字符串发送到我的控制器 而不是像映射到 Spring 的表单提交那样发送
  • 如何使用 Metal 将纹理缓冲区数据传递给 Shader?

    我想在计算着色器中将纹理数据作为一维数组处理 我读到最好的方法是将其作为缓冲区而不是一维纹理传递 我正在加载纹理 let textureLoader MTKTextureLoader device device do if let imag
  • DataGridView 中的总计行

    我正在开发一个winform应用程序 我想显示每列最后一行的列总和 该行必须始终可见 目前 我正在考虑在带有记录的数据网格视图下方添加另一个数据网格视图 并将在底部数据网格视图中显示总和 如果有更好的方法来完成这个任务吗 不 需要添加另一个
  • 删除 geom_text 中的重复标签

    我的数据如下所示 composerName season Location Time Venue eventType id conductorName interval movement workTitle 1 Anthem 1918 19
  • Magento 1.6,Google 购物/产品/内容

    Magento 1 6 于本周初发布 但使用 mage googleshopping 扩展 http www magentocommerce com magento connect Magento Core extension 6887 m
  • 编译 Play 应用程序时出现的问题

    我在编译 Play 框架应用程序时遇到了一些问题 有时应用程序运行良好 但大多数时候这些问题都是在 sbt 和 activator 工具中发生的 这是使用 sbt 编译我的应用程序的示例 info Compiling 15 Scala so
  • Objective C 类方法返回值,分配给弱/强属性

    我面临着一些涉及弱属性和强属性的困惑 为了简洁起见 我不会包含整个代码 我创建了一个返回 UIView 对象的类便捷方法 并在 UIView 类别中实现了它作为子类化的替代方法 implementation UIView CSMonthVi
  • 使用 CUT 和 Quartile 在 R 函数中生成中断

    下列的之前的一些很好的建议 我现在正在编写第二个 R 函数并使用类似的逻辑 然而 我正在尝试更多地自动化 但可能变得太聪明了 不利于我自己 我想根据订单数量将客户分成五分位数 这是我执行此操作的代码 sample data clientID
  • 如何在 apache Camel Rest api 中进行自定义错误处理?

    我有一个 apache Camel Rest api 它从 S3 下载文件 我发送 json 输入 key bucketname accessKey secretKey region 以便写入 URI 代码如下所示 public stati
  • vba 循环中出现类型不匹配错误

    我正在 Outlook VBA 中工作 并构建了一个 For Next 循环来读取 MailItems 的正文 其格式类似于 Key Value 对 在某种程度上 它似乎有效 但在第二次迭代结束时 当它到达 下一个项目 时 我收到抛出 类型
  • 阻止传出短信

    如果短信包含根据数据库过滤的单词 如何阻止传出短信 我可以监控发送的消息是否包含已过滤的单词 但我无法阻止短信 您无法停止手机上默认消息发送应用程序发送短信 为此 您必须创建自己的短信盒应用程序 然后才能向其中添加自定义功能
  • 如何使用 Bundle 在 Activity 之间传递 Uri 数组

    我需要将 Uri 数组传递给另一个活动 传递一个我简单使用的字符串数组 String images getImagesPathString Bundle b new Bundle b putStringArray images images
  • 如何向 UIToolBar 添加图像?

    我想将图像添加到用户无法与之交互的 UIToolBar 它本质上只是一个非交互式指示器 就像徽章一样 这可能吗 如果是这样 怎么办 创建一个UIBarButtonItem使用图像并添加它 Example UIBarButtonItem it
  • 处理按钮外部的点击事件

    我正在尝试通过重现 Apple AppStore 中的应用程序来练习 C 在应用程序中 有一个带有文本的矩形 Touch me 当您触摸它时 矩形会自行重新定位 执行此操作几次后 文本将更改为 不要碰我 在这种情况下 您必须触摸矩形之外 一
  • Pyspark 向数据帧添加顺序和确定性索引

    我需要向数据帧添加一个索引列 并具有三个非常简单的约束 从0开始 是连续的 具有确定性 我确信我错过了一些明显的东西 因为我发现的例子对于这样一个简单的任务来说看起来非常复杂 或者使用非顺序 非确定性越来越单调的 id 我不想使用索引进行压