通过保留顺序,根据 id 列将 Spark DataFrame 拆分为两个 DataFrame(70% 和 30%)

2024-02-07

我有一个 Spark 数据框,就像

id  start_time   feature
1   01-01-2018   3.567
1   01-02-2018   4.454
1   01-03-2018   6.455
2   01-02-2018   343.4
2   01-08-2018   45.4
3   02-04-2018   43.56
3   02-07-2018   34.56
3   03-07-2018   23.6

我希望能够根据以下内容将其分成两个数据框编号列因此,我应该按 id 列分组,按 start_time 排序,并通过保留顺序将 70% 的行放入一个数据帧,将 30% 的行放入另一个数据帧。结果应如下所示:

Dataframe1:
id  start_time   feature
1   01-01-2018   3.567
1   01-02-2018   4.454
2   01-02-2018   343.4
3   02-04-2018   43.56
3   02-07-2018   34.56

Dataframe2:
1   01-03-2018   6.455
2   01-08-2018   45.4
3   03-07-2018   23.6

我正在使用 Spark 2.0 和 python。实现这一点的最佳方法是什么?


我必须这样做的方法是创建两个窗口:

w1 =  Window.partitionBy(df.id).orderBy(df.start_time)
w2 =  Window.partitionBy(df.id)

df = df.withColumn("row_number",F.row_number().over(w1))\
                     .withColumn("count",F.count("id").over(w2))\
                     .withColumn("percent",(F.col("row_number")/F.col("count")))
train = df.filter(df.percent<=0.70)
test = df.filter(df.percent>0.70)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过保留顺序,根据 id 列将 Spark DataFrame 拆分为两个 DataFrame(70% 和 30%) 的相关文章

随机推荐

  • 理解Python内存分配和释放

    我最近遇到本文 http deeplearning net software theano tutorial python memory management html关于python内存分配 在这个页面中 它描述了 python 的内存使
  • 在 R 中进行矩阵乘法时的非一致性数组

    我正在尝试在 R 中实现内核岭回归 公式为 alpha lt lambda I K 1 y 拉姆达 0 1 I 与 K 大小相同的单位矩阵 y 是与 K 具有相同行数的特征向量 所以我在 R 中尝试了这个 I lt diag nrow df
  • 如何将 AWS Glue 作业的输出返回到调用 Step Function 工作流程?

    AWS Step Functions 允许调用 AWS Glue 作业 如下所述 https docs aws amazon com step functions latest dg connect glue html https docs
  • 合并冲突解决

    当 Git 中出现合并冲突时 如下所示的垃圾会被插入到冲突的文件中 三个问题 你如何阅读这些注释 解决这些合并冲突时可以使用哪些策略 是否有适用于 Mac 的 GUI 工具知道如何读取这些文件并并排显示两个版本 以便更轻松地解决问题 注意
  • 如何从 Composer 中全局删除包?

    我运行此命令进行全局安装PHPUnit composer global require phpunit phpunit 3 7 现在我想全局卸载PHPUnit 有任何想法吗 要删除全局安装的包 请运行 composer global rem
  • 如何保持 ARKit SCNNode 就位

    嘿 我正在想办法 如何保持简单节点的位置 当我在 ARKit 中绕着它走动时 Code func renderer renderer SCNSceneRenderer didAdd node SCNNode for anchor ARAnc
  • 有没有一种简单的方法来枚举 Base 中数组的索引?

    有时人们想要循环遍历数组的索引 例如 假设我想创建一个嘈杂的乘法表 首先 创建一些噪音 julia gt m 0 1 rand 2 3 2 3 Matrix Float64 0 0692654 0 0297861 0 0642931 0 0
  • Android-相对布局中ScrollView中的LinearLayout

    我的布局有点问题 我制作了RelativeLayout 其中放置了两个LinearLayout 1 和2 并在它们之间放置了带有LinearLayout 的ScrollView 接下来 我将 ScrollView 设置为放置在 Linear
  • Int64 创建数字范围

    我需要能够创建顺序长度超过 19 位的数字范围 我尝试使用 Enumerable Range 120000003463014 50000 ToList 这适用于较小的数字 但使用上面的代码时 我收到一条错误消息 指出它对于 int32 数字
  • SQL Server 2008根据机器设置获取DATETIMEOFFSET

    在 SQL Server 2008 R2 上 我有以下 T SQL 代码 SELECT CAST GETDATE AS DATETIMEOFFSET 这给了我如下结果 2011 12 26 10 21 13 7970000 00 00 但结
  • Apache Camel onException

    我想捕获路由中的所有异常 我添加这个 OnException onException Exception class process new MyFunctionFailureHandler stop 然后 我创建 MyFunction F
  • Heroku 与 NodeMailer 的问题

    我在 Heroku 上使用 Nodemailer 时遇到问题 非常感谢您的帮助 我的应用程序的先前版本曾经在 Heroku 上运行没有问题 当我回滚到该版本时 它仍然运行良好 在该应用程序的最新版本中 我没有对访问 Nodemailer 的
  • 在 iOS 中播放简单音效的最佳方法

    我发现许多有关在 iOS 中播放声音的相互矛盾的数据 每次用户触摸屏幕时仅播放简单的 ping 声音片段的推荐方法是什么 我用这个 头文件 import
  • 为什么“pip show”或“pip list”对我不起作用?

    蟒蛇的pip正在为我安装和更新软件包 但一些记录的命令似乎不受支持 至少在 OS 10 8 2 和 Python 2 7 2 上运行 1 2 1 时 当我尝试时 pip list or pip show
  • 升级时创建表

    我一直在努力解决这个问题 但我不知道我错过了什么 我有一个 Android 应用程序 我希望再添加 1 个表 但是我无法做到这一点 而且我也没有例外 不喜欢这些无声杀手 下面是我的 SQLiteHelper 类的代码 public clas
  • GWT 对单元格表进行排序,可能只是我没有看到的

    在过去的几个小时里 我一直在努力对 GWT CellTable 进行排序 这确实是一个愚蠢的问题 因为它已经在这里完成了http gwt google com samples Showcase Showcase html CwCellTab
  • Operator= 和 C++ 中未继承的函数?

    在我刚刚进行的测试之前 我认为在 C 中只有构造函数不被继承 但显然 任务operator 是不是太 这是什么原因呢 是否有任何解决方法来继承赋值运算符 是否也是如此operator operator 所有其他函数 除了构造函数 运算符 都
  • 暂停JW播放器?

    我有三个标签 每个选项卡的滑块中有两个视频 问题是当我切换任何选项卡时or单击任何单个视频 所有其他视频都应暂停 我可以收集所有 id 然后循环使用 stop 但是还有其他更干净 更简单的方法吗 jwplayer video pub sto
  • Universal Analytics - 第三方支付网关

    我们的网站目前正在通过跟踪代码管理器使用 Universal Analytics 进行跟踪 我们的结账流程包括在前往感谢页面之前重定向至第三方支付网关 所以 它看起来像这样 site com checkout gt site com pay
  • 通过保留顺序,根据 id 列将 Spark DataFrame 拆分为两个 DataFrame(70% 和 30%)

    我有一个 Spark 数据框 就像 id start time feature 1 01 01 2018 3 567 1 01 02 2018 4 454 1 01 03 2018 6 455 2 01 02 2018 343 4 2 01