PySpark 1.5 如何将时间戳从秒截断为最近的分钟

2023-12-27

我正在使用 PySpark。我在数据帧('canon_evt')中有一个列('dt'),这是一个时间戳。我正在尝试从日期时间值中删除秒。它最初是作为字符串从镶木地板中读入的。然后我尝试通过将其转换为时间戳

canon_evt = canon_evt.withColumn('dt',to_date(canon_evt.dt))
canon_evt= canon_evt.withColumn('dt',canon_evt.dt.astype('Timestamp'))

然后我想删除秒数。我尝试了“trunc”、“date_format”,甚至尝试将各个部分连接在一起,如下所示。我认为它需要某种映射和 lambda 组合,但我不确定 Timestamp 是否是合适的格式,以及是否可以摆脱秒。

canon_evt = canon_evt.withColumn('dyt',year('dt') + '-' + month('dt') +
    '-' + dayofmonth('dt') + ' ' + hour('dt') + ':' + minute('dt'))

[Row(dt=datetime.datetime(2015, 9, 16, 0, 0),dyt=None)]

火花 >= 2.3

您可以使用date_trunc

df.withColumn("dt_truncated", date_trunc("minute", col("dt"))).show()

## +-------------------+-------------------+
## |                 dt|       dt_truncated|
## +-------------------+-------------------+
## |1970-01-01 00:00:00|1970-01-01 00:00:00|
## |2015-09-16 05:39:46|2015-09-16 05:39:00|
## |2015-09-16 05:40:46|2015-09-16 05:40:00|
## |2016-03-05 02:00:10|2016-03-05 02:00:00|
## +-------------------+-------------------+

火花

转换为 Unix 时间戳和基本算术应该是诀窍:

from pyspark.sql import Row
from pyspark.sql.functions import col, unix_timestamp, round

df = sc.parallelize([
    Row(dt='1970-01-01 00:00:00'),
    Row(dt='2015-09-16 05:39:46'),
    Row(dt='2015-09-16 05:40:46'),
    Row(dt='2016-03-05 02:00:10'),
]).toDF()


## unix_timestamp converts string to Unix timestamp (bigint / long)
## in seconds. Divide by 60, round, multiply by 60 and cast
## should work just fine.
## 
dt_truncated = ((round(unix_timestamp(col("dt")) / 60) * 60)
    .cast("timestamp"))

df.withColumn("dt_truncated", dt_truncated).show(10, False)
## +-------------------+---------------------+
## |dt                 |dt_truncated         |
## +-------------------+---------------------+
## |1970-01-01 00:00:00|1970-01-01 00:00:00.0|
## |2015-09-16 05:39:46|2015-09-16 05:40:00.0|
## |2015-09-16 05:40:46|2015-09-16 05:41:00.0|
## |2016-03-05 02:00:10|2016-03-05 02:00:00.0|
## +-------------------+---------------------+
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PySpark 1.5 如何将时间戳从秒截断为最近的分钟 的相关文章

随机推荐

  • GeoDjango:如何获得两点之间的距离?

    My Profile模型有这个字段 location models PointField geography True dim 2 srid 4326 我想计算两者之间的距离locations 考虑到地球是一个球体 使用GeoDjango
  • Git 推送权限被拒绝(公钥)但已成功通过身份验证

    我想用 ssh 将我的提交推送到 github 我明白了 您已成功通过身份验证 运行后消息ssh T email protected cdn cgi l email protection命令 但是当我想推送我的提交时 我收到此错误 权限被拒
  • Facebook 移动广告应用程序安装未显示在活动报告中

    我已经成功实现了 Facebook SDK 和 AppEvents 来报告我的 Android 应用程序的安装 我已经验证它在仪表板中注册了最后的安装数据 并且我在 Facebook 的 应用程序事件 选项卡中看到了数千个 fb mobil
  • 更新 SQL Server 中的 SID

    我的用户已从 Active Directory 中删除并重新创建 当运行select suser sid 我注意到它显示旧的 SID 有没有办法将其更新为我的新 SID 我是 SQL Server 的 DBA 管理员 你不能ALTER的 S
  • 如何在fragment中设置ContentView?

    现在我有了这个片段 我想将其与 setContentView 一起使用 但到目前为止我找不到如何使用 您可以在下面的代码中看到我的情况 我不想膨胀布局 我尝试将它与名为 SampleView 的视图一起使用 那么我该怎么做呢 public
  • 使用 Microsoft Visual C# 2010 Express 加载 DLL

    我使用 Microsoft C 2010 Express 和 Imperx 的 FrameLink Express 驱动程序 当我尝试在运行时加载 DLL 时 出现异常 无法加载 DLL VCECLB dll 无法加载指定的模块 成立 HR
  • 跨页面发布。在 Asp.net 中使用上一页是一个好习惯吗?

    我在 MSDN 上发现这篇文章谈论跨页面发帖 http msdn microsoft com en us library ms178139 aspx 我从未使用过 Page PreviousPage 但我认为这很有趣 你用它吗 这是一个好的
  • 在 monodroid 或 monotouch 中,我应该使用什么来代替 app.config 作为配置字符串?

    我想在 monodroid 项目中存储开发与生产连接字符串和配置字符串 我通常会将其作为应用程序设置存储在 web config 或 app config 中 但是在 monodroid 和 monotouch 项目中应该如何执行呢 我还希
  • 在从 Enum 填充的 ListPicker 中使用本地化字符串

    我正在填充一个ListPicker从一个Enum 例如 如果我有以下枚举 public enum Pets Dog Cat Platypus 我通过以下方式填充 ListPicker PetListPicker ItemsSource En
  • Ruby 元编程:无法将方法发送到模块

    例如 我有以下自定义类和模块 module SimpleModule def hello world puts i am a SimpleModule method end def self class hello world puts i
  • 导航栏显示在底部

    正如您从我添加的图片中看到的 我的导航栏显示在屏幕底部的表格视图下 我刚刚将导航栏拖放到该视图控制器上 这意味着我没有使用导航控制器 我不明白为什么会发生这种情况 我确信这是一个我所缺少的简单修复 图 2 是故事板视图 图 3 应用程序运行
  • Google Play 警告 Google Play 应用内结算实施不正确

    我刚刚收到来自 Google Play 的以下电子邮件 您好 Google Play 开发者 我们检测到您在此电子邮件末尾列出的应用程序是 不设置目标套餐调用应用内付费服务 为了意图 这可以使恶意包绕过 Play 商店计费系统并访问尚未购买
  • 给定一个未知长度的列表,通过仅扫描 1 次来返回其中的随机项

    给定一个未知长度的列表 通过仅扫描 1 次来返回其中的随机项 我的想法 类似的算法是储层采样 由其他人发布 但是 它太复杂了 因为它需要运行 rand 并在每次迭代中保留 k 个节点 有更好的解决方案吗 O n 时间和 O 1 空间 你为什
  • 使用Apple新的AudioEngine改变AudioPlayer声音的Pitch

    我目前正在尝试让 Apple 的新音频引擎与我当前的音频设置配合使用 具体来说 我正在尝试使用音频引擎改变音调 这显然是可能的这个帖子 https stackoverflow com questions 25333140 swift usi
  • glsl 和不同值的透视校正

    光栅化器是否使用透视校正对每个变化的顶点值 或在较新版本的 glsl 值中 走出 顶点着色器 进行插值 这取决于硬件吗 当发生裁剪时 裁剪顶点的值是如何计算的 我尝试撤消透视校正 并注意到被剪切的多边形的奇怪行为 我想更好地了解幕后发生的事
  • DataGridView - 使用DataPropertyName显示子元素属性

    让我们想象一下我有以下课程 public class Master public string MasterName Something public List
  • Flutter:我们如何将 Firebase 数据库与桌面应用程序一起使用

    我正在考虑使用 dart 和 flutter 开发一个桌面应用程序 但我不知道如何将 Firebase 数据库与其集成 任何建议将不胜感激 提前致谢 Use Firedart用于将 FIRebase 集成到基于桌面的 Flutter 应用程
  • python 中捕获性能异常

    我知道 python 中的异常处理速度很快try但就捕获量而言 可能会很昂贵 这是否意味着 try some code except MyException pass 比这个更快吗 try some code except MyExcept
  • numpy timedelta64 不显示分数

    我想将 847 小时转换为天 实际结果是 847 24 35 29 但是 numpy 仅显示 35 天 import numpy as np x np timedelta64 847 h x np timedelta64 x D print
  • PySpark 1.5 如何将时间戳从秒截断为最近的分钟

    我正在使用 PySpark 我在数据帧 canon evt 中有一个列 dt 这是一个时间戳 我正在尝试从日期时间值中删除秒 它最初是作为字符串从镶木地板中读入的 然后我尝试通过将其转换为时间戳 canon evt canon evt wi