PySpark:将时间戳转换为数据帧中的整数时不一致

2023-11-30

我有一个具有如下粗略结构的数据框:

+-------------------------+-------------------------+--------+
| timestamp               | adj_timestamp           | values |
+-------------------------+-------------------------+--------+
| 2017-05-31 15:30:48.000 | 2017-05-31 11:30:00.000 | 0      |
+-------------------------+-------------------------+--------+
| 2017-05-31 15:31:45.000 | 2017-05-31 11:30:00.000 | 0      |
+-------------------------+-------------------------+--------+
| 2017-05-31 15:32:49.000 | 2017-05-31 11:30:00.000 | 0      |
...

我正在尝试将转换函数应用于两个时间列,以使用以下方法将它们转换为整数表示形式:time包裹。我的用户定义的函数以及它如何应用于上面的数据框:

def timeConverter(timestamp):
    time_tuple = time.strptime(timestamp, "%Y-%m-%d %H:%M:%S.000")
    timevalue = time.mktime(time_tuple)
    return timevalue

def convertDateColumn(Data):
    timeUDF = udf(timeConverter,FloatType())
    finalData = Data.withColumn('adj_timestamp', timeUDF('adj_timestamp'))

    return finalData

例如,第一个条目adj_timestamp列变为:1496244608

通过将其转换回来datetime.fromtimestamp结果是:2017-05-31 15:30:08

这与我开始时的值不同......很好奇发生了什么!

编辑:由于我的行数比显示的 3 行多得多,是否可能正在异步处理数据,因此生成的数据帧的顺序与输入的顺序不同?


For udf,我还不太确定为什么它不起作用。将Python函数转换为UDF时可能存在浮点操作问题。请参阅下面如何使用整数输出。或者,您可以使用名为的 Spark 函数进行解析unix_timestamp这允许您转换时间戳。我在下面举一个例子。希望它能有所帮助。

在这里,我根据您展示的示例创建 Spark 数据框,

import pandas as pd

df = pd.DataFrame([
    ['2017-05-31 15:30:48.000', '2017-05-31 11:30:00.000', 0], 
    ['2017-05-31 15:31:45.000', '2017-05-31 11:30:00.000', 0],
    ['2017-05-31 15:32:49.000', '2017-05-31 11:30:00.000', 0]], 
    columns=['timestamp', 'adj_timestamp', 'values'])
df = spark.createDataFrame(df)

使用Spark函数求解

Apply fn.unix_timestamp到专栏timestamp

import pyspark.sql.functions as fn
from pyspark.sql.types import *
df.select(fn.unix_timestamp(fn.col('timestamp'), format='yyyy-MM-dd HH:mm:ss.000').alias('unix_timestamp')).show()

对于第一列,输出如下所示

+--------------+
|unix_timestamp|
+--------------+
|    1496259048|
|    1496259105|
|    1496259169|
+--------------+

您可以使用将其放回时间戳datetime图书馆:

import datetime
datetime.datetime.fromtimestamp(1496259048) # output as datetime(2017, 5, 31, 15, 30, 48)

通过转换为整数而不是浮点数来解决

import datetime
import time

def timeConverter(timestamp):
    time_tuple = datetime.datetime.strptime(timestamp, "%Y-%m-%d %H:%M:%S.000").timetuple()
    timevalue = int(time.mktime(time_tuple)) # convert to int here
    return timevalue

time_udf = fn.udf(timeConverter, IntegerType()) # output interger

df.select(time_udf(fn.col('timestamp'))) 

在这里,我们将得到相同的时间戳[1496259048, 1496259105, 1496259169]作为使用unix_timestamp.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PySpark:将时间戳转换为数据帧中的整数时不一致 的相关文章

  • 在 python 程序中合并第三方库的最佳实践是什么?

    下午好 我正在为我的工作编写一个中小型Python程序 该任务需要我使用 Excel 库xlwt and xlrd 以及一个用于查询 Oracle 数据库的库 称为CX Oracle 我正在通过版本控制系统 即CVS 开发该项目 我想知道围
  • OpenCV Python cv2.mixChannels()

    我试图将其从 C 转换为 Python 但它给出了不同的色调结果 In C Transform it to HSV cvtColor src hsv CV BGR2HSV Use only the Hue value hue create
  • Python(Selenium):如何通过登录重定向/组织登录登录网站

    我不是专业程序员 所以请原谅任何愚蠢的错误 我正在做一些研究 我正在尝试使用 Selenium 登录数据库来搜索大约 1000 个术语 我有两个问题 1 重定向到组织登录页面后如何使用 Selenium 登录 2 如何检索数据库 在我解决
  • 通过最小元素比较对 5 个元素进行排序

    我必须在 python 中使用元素之间的最小比较次数来建模对 5 个元素的列表进行排序的执行计划 除此之外 复杂性是无关紧要的 结果是一个对的列表 表示在另一时间对列表进行排序所需的比较 我知道有一种算法可以通过 7 次比较 总是在元素之间
  • 为什么我的执行程序核心构建指定了 OOM?

    我有一个正在运行的构建DRIVER MEMORY LARGE NUM EXECUTORS 64 and EXECUTOR CORES LARGE 为什么这没有足够的资源来防止我的工作因执行者损失而失败OOM https stackoverf
  • 根据列值突出显示数据框中的行?

    假设我有这样的数据框 col1 col2 col3 col4 0 A A 1 pass 2 1 A A 2 pass 4 2 A A 1 fail 4 3 A A 1 fail 5 4 A A 1 pass 3 5 A A 2 fail 2
  • 如何从网页中嵌入的 Tableau 图表中抓取工具提示值

    我试图弄清楚是否有一种方法以及如何使用 python 从网页中的 Tableau 嵌入图形中抓取工具提示值 以下是当用户将鼠标悬停在条形上时带有工具提示的图表示例 我从要从中抓取的原始网页中获取了此网址 https covid19 colo
  • Python pickle:腌制对象不等于源对象

    我认为这是预期的行为 但想检查一下 也许找出原因 因为我所做的研究结果是空白 我有一个函数可以提取数据 创建自定义类的新实例 然后将其附加到列表中 该类仅包含变量 然后 我使用协议 2 作为二进制文件将该列表腌制到文件中 稍后我重新运行脚本
  • 如何格式化 Highcharts 的 (x,y) 对数据的日期时间

    我的序列化方法会产生如下所示的日期时间字符串 2014 07 09T12 30 41Z 为什么下面的代码不起作用 function container highcharts xAxis type datetime series data x
  • Flask如何获取请求的HTTP_ORIGIN

    我想用我自己设置的 Access Control Allow Origin 标头做出响应 而弄清楚请求中的 HTTP ORIGIN 参数在哪里似乎很混乱 我在用着烧瓶 0 10 1 以及HTTP ORIGIN似乎是这个的特点之一object
  • Jupyter Notebook 内核一直很忙

    我已经安装了 anaconda 并且 python 在 Spyder IPython 等中工作正常 但是我无法运行 python 笔记本 内核被创建 它也连接 但它始终显示黑圈忙碌符号 防火墙或防病毒软件没有问题 我尝试过禁用两者 我也无法
  • 如何在Python中对类别进行加权随机抽样

    给定一个元组列表 其中每个元组都包含一个概率和一个项目 我想根据其概率对项目进行采样 例如 给出列表 3 a 4 b 3 c 我想在 40 的时间内对 b 进行采样 在 python 中执行此操作的规范方法是什么 我查看了 random 模
  • Shiny:动态数据框构建; renderUI、观察、reactiveValues

    我认为如何使用 Shiny 的 renderUI 功能动态子集数据的问题经常出现 但我很难理解何时使用 renderUI 带有 uiOutput 而不是其他功能 包括观察 反应 反应值甚至条件面板 我想构建一个完全交互式的数据框架 其中每个
  • 每个 X 具有多个 Y 值的 Python 散点图

    我正在尝试使用 Python 创建一个散点图 其中包含两个 X 类别 cat1 cat2 每个类别都有多个 Y 值 如果每个 X 值的 Y 值的数量相同 我可以使用以下代码使其工作 import numpy as np import mat
  • 如何在 Python 中追加到 JSON 文件?

    我有一个 JSON 文件 其中包含 67790 1 kwh 319 4 现在我创建一个字典a dict我需要将其附加到 JSON 文件中 我尝试了这段代码 with open DATA FILENAME a as f json obj js
  • 发送用户注册密码,django-allauth

    我在 django 应用程序上使用 django alluth 进行身份验证 注册 我需要创建一个自定义注册表单 其中只有一个字段 电子邮件 密码将在服务器上生成 这是我创建的表格 from django import forms from
  • 在 Qt 中自动调整标签文本大小 - 奇怪的行为

    在 Qt 中 我有一个复合小部件 它由排列在 QBoxLayouts 内的多个 QLabels 组成 当小部件调整大小时 我希望标签文本缩放以填充标签区域 并且我已经在 resizeEvent 中实现了文本大小的调整 这可行 但似乎发生了某
  • Python 类继承 - 诡异的动作

    我观察到类继承有一个奇怪的效果 对于我正在处理的项目 我正在创建一个类来充当另一个模块的类的包装器 我正在使用第 3 方 aeidon 模块 用于操作字幕文件 但问题可能不太具体 以下是您通常如何使用该模块 project aeidon P
  • NotImplementedError:无法将符号张量 (lstm_2/strided_slice:0) 转换为 numpy 数组。时间

    张量流版本 2 3 1 numpy 版本 1 20 在代码下面 define model model Sequential model add LSTM 50 activation relu input shape n steps n fe
  • Statsmodels.formula.api OLS不显示截距的统计值

    我正在运行以下源代码 import statsmodels formula api as sm Add one column of ones for the intercept term X np append arr np ones 50

随机推荐

  • 在 docker 构建期间无法使用进程替换,因为 bash 进入 posix 模式

    在 Dockerfile 中 我想使用进程替换 RUN echo lt echo DATA DATA But docker build运行每个 RUN 命令 bin sh 显然正在运行sh导致 bash 切换到 POSIX 模式 该模式不允
  • 如何让 Range 返回其名称?

    Dim sampleRange as Range Set sampleRange Worksheet Range Cells 1 1 Cells 1 4 sampleRange Name Range1 MsgBox sampleRange
  • 如何从另一个 PHP 脚本异步运行一个 PHP 脚本? [复制]

    这个问题在这里已经有答案了 可能的重复 调用另一个 PHP 脚本并在其他脚本完成之前将控制权返回给用户 我需要从另一个 PHP 脚本异步运行一个 PHP 脚本 Script 1 Script 2 In script 1 I use syst
  • 如何在MySQL中选择列中具有最大值的行?

    其他可用答案都没有解决我的问题 我有一张这样的桌子 id cc count 1 HN 22 1 US 18 1 VN 1 2 DK 2 2 US 256 3 SK 1 3 US 66310 4 UA 2 4 US 263 6 FR 7 6
  • 如何说服借用检查器允许我缓存值?

    借用检查员打败了我 use std collections HashMap struct Cache cache Vec
  • 带自定义选择的静默安装程序

    目前我的安装程序需要用户在安装时选择他们想要使用的设置类型 假设有设置 A B 和 C 如果想在静默安装程序中进行此操作 有什么方法可以用吗 我正在使用安装盾 您可以设置公共财产从 msiexec exe 命令行进入 MSI 文件 如下所示
  • Angular使用ajax获取JSON数据

    如何通过ajax和角度获取json数据 我尝试了很多 但我的代码不起作用 我的代码
  • 推送期间发生内部异常:无法存储对象

    你好 我是 Git 新手 正在尝试设置服务器部分和客户端部分 在服务器端我有 ssh 访问权限和 Git 版本 1 5 在客户端 我使用 eGit 进行 Eclipse 我通过通常的方式在服务器端创建了 git repo git init
  • 将 varbinary 数据保存到磁盘的脚本

    我有一些 varbinary 数据存储在 MS Sql Server 2005 的表中 是否有人有将查询作为输入的 SQL 代码 假设查询保证返回一列 varbinary 并将字节输出到磁盘 一个文件 每行 我确信这个问题之前已经被问过一千
  • Android 上的 Html5 画布动画速度很慢

    我正在开发街机游戏Android and iOS 我有一个动画性能问题在运行 Android 2 2 1 的 Galaxy S SL 上 观看示例 http jsfiddle net qgWdA show 编辑代码 http jsfiddl
  • 在launchd中使用jq解析JSON

    我有一个 shell 脚本 它评估一个充满 JSON 文件的文件夹 直接调用时运行正常 但从 launchd 运行时失败 具体来说 launchd 在这一行失败 current file snapshots cat current file
  • 在页面刷新时保留表单数据

    我遇到过这样的情况 由于某种原因 当用户填写表单时网页可能会刷新 不需要的效果是擦除用户已经输入的数据 有没有办法让表单数据在页面刷新时保留 该表单包括文本输入和选择 You say I have a situation where for
  • 查找记录最多的十年,SQL Server

    我有以下数据库图 我想找到电影数量最多的十年 例如 1990 到 2000 年 实际上它只处理 电影 表 关于如何做到这一点有什么想法吗 您可以使用 SQL Server 中的 LEFT 函数来获取年份的十年 十年是年份的前 3 位数字 您
  • 处理 Android 导航组件中的后退按钮

    我想知道如何使用导航控制器正确处理系统后退按钮操作 在我的应用程序中 我有两个片段 例如fragment1和fragment2 并且我在fragment1中有一个目标为fragment2的操作 一切都运行良好 除了一件事 当用户按下frag
  • Go错误:无法在没有实例化的情况下使用泛型类型

    在学习 Go 泛型时 我遇到了一个似乎无法解决的错误 我把它归结为最简单的代码 type opStack T any T func main t make opStack t new opStack t append t 0 fmt Pri
  • 如何阻止“后退”和“刷新”按钮重新提交表单?

    我正在做网络开发 我有一个与信用卡有关的页面 当用户单击 刷新 或 返回 时 交易将再次执行 这是不需要的 这包括浏览器左上角的 后退 和 刷新 按钮 右键单击 gt 刷新 后退 按 F5 键 这只能在某些 cgi 页面上完成 而不是在所有
  • 开发 N 层应用程序。向什么方向发展?

    假设您正在实现一个用户故事 需要更改从 UI 或服务外观 到数据库的所有层 你朝什么方向移动 从 UI 到业务层到存储库到数据库 从数据库到存储库到业务层再到 UI 这取决于 什么 我见过的这类问题的最佳答案是由原子对象人员和他们的主持人优
  • 这段 C++ 代码是如何工作的

    我正在开发一个现有的项目 由其他人编写 但我无法理解这两个简单的函数 我感兴趣的第一个函数包含 int iCounts NUM GRADES PROFILEMAN gt GetMachineProfile gt GetGrades pSon
  • 如何有效地将一系列连续整数插入 std::set 中?

    在 C 中 我有一个 std set 我想插入一系列连续整数 我怎样才能有效地做到这一点 希望在 O n 时间内完成 其中 n 是范围的长度 我想我会使用 std insert 的 inputIterator 版本 但不清楚如何构建输入迭代
  • PySpark:将时间戳转换为数据帧中的整数时不一致

    我有一个具有如下粗略结构的数据框 timestamp adj timestamp values 2017 05 31 15 30 48 000 2017 05 31 11 30 00 000 0 2017 05 31 15 31 45 00