【问题标题】:Convert datatime format to sampletime将日期时间格式转换为采样时间
【发布时间】:2017-08-07 13:10:39
【问题描述】:

在 Python 上工作,我需要将日期时间值数组转换为采样时间,因为我想将时间序列的相应时间视为采样时间 [0..T]。

[2013/11/09 14:29:54.660, 2013/11/09 14:29:54.680, ... T] where T> 1000。所以我有一个 >1000 个日期时间值的数组,非常大

我想出了以下代码:

tiempos= [datetime.strptime(x,"%Y/%m/%d %H:%M:%S.%f") for x in csvTimeColum]
sampletime= [(t- tiempos[0]).microseconds/1000 for t in tiempos]

这段代码似乎运行良好,但我在信号中有批量 1000 个样本:

[0,20,...,980,0,20,...,980,0,20,...,980,...]

所以,我得到的信号不是一个连续的。我如何正确地进行这种转换以保持连续信号?有人知道如何解决这个问题吗?

【问题讨论】:

  • 您的代码对我来说看起来不错。问题是什么?您需要分享更多数据!
  • @AntonvBR 查看最后一个数组,以及生成的采样时间。它一遍又一遍地从0开始。因此,当您使用新的采样时间数组绘制信号时,情况会一团糟。我正在检查 pandas 库,但我不知道该怎么做
  • 哦,这是因为微秒重置
  • @fran_jo:你想要什么时间起点?显然您尝试了时间序列的起源,但您不喜欢它。你为什么不直接取一个任意的日期(日期时间)来转换成相同的?
  • @SergeBallesta 我不认为我完全理解......我的数据的来源是数组的第一个值,这必须是采样时间 0。但我面临的问题是结果数组上的“循环”(X>1000 个样本数组中 0..980 的 1000 个样本批次)

标签: python time-series


【解决方案1】:

使用也适用于 timedeltas 的 total_seconds(): Convert TimeDiff to total seconds

sampletime= [(t- tiempos[0]).total_seconds()*1000 for t in tiempos]

工作示例:

import datetime
csvTimeColum = ["2013/11/09 14:29:54.660", "2013/11/09 14:29:54.680"]
tiempos= [datetime.datetime.strptime(x,"%Y/%m/%d %H:%M:%S.%f") for x in csvTimeColum]
sampletime= [(t- tiempos[0]).total_seconds()*1000 for t in tiempos]
sampletime # [0.0, 20.0]

【讨论】:

  • 谢谢@AntonvBR。这就是我要找的东西!
猜你喜欢
  • 2017-12-09
  • 2015-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-26
  • 2023-04-05
  • 1970-01-01
  • 2012-02-28
相关资源
最近更新 更多