从开始时间和经过的秒数计算日期时间

Posted

技术标签:

【中文标题】从开始时间和经过的秒数计算日期时间【英文标题】:Calculating date time from start time and elapsed seconds 【发布时间】:2016-05-30 22:05:20 【问题描述】:

我有一个数据框,其中我的索引是经过的秒数系列。

Depth_m | Temperature_degC | Salinity_PSU | OBS S9604_mV | OBS highsens S9604_mV | OBS S9602_mV | OBS S9603_mV | Time elapsed_sec                           

0.00    |        35.687    |    28.9931   |   36.7530    |        0.0082         |    0.0024    |    0.0059    | 0.0120
0.25    |        35.684    |    28.9932   |   36.7531    |        0.0083         |    0.0026    |    0.0060    | 0.0106
0.50    |        35.687    |    28.9931   |   36.7532    |        0.0079         |    0.0021    |    0.0055    | 0.0099
0.75    |        35.687    |    28.9931   |   36.7532    |        0.0305         |    0.0075    |    0.0056    | 0.0101

我想计算创建一个从开始时间和经过的秒数获得的新系列。 我正在使用带有熊猫的 python v 2.7。 你们中有人知道如何获得吗? 谢谢

【问题讨论】:

【参考方案1】:

这样的?

start_time = pd.Timestamp('2016-1-1 00:00')
df = pd.DataFrame('seconds': [ 1, 2, 3])
df['new_time'] = [start_time + dt.timedelta(seconds=s) for s in df.seconds]

>>> df
   seconds            new_time
0        1 2016-01-01 00:00:01
1        2 2016-01-01 00:00:02
2        3 2016-01-01 00:00:03

【讨论】:

【参考方案2】:

这应该可以解决问题

from __future__ import print_function, division
import pandas as pd

start_time = 14
data = pd.read_csv('data.txt', sep="|", header=0,   skip_blank_lines=True)
data['Time'] = pd.Series(data[' Time elapsed_sec'] + start_time, index=data.index)
print(data)

缺少像Convert Pandas Column to DateTime这样的日期时间转换

【讨论】:

非常感谢 Lageos,我首先尝试了您的解决方案,然后意识到我首先需要将经过时间的列用作一个系列,而不是作为我的索引。 现在我得到一个 TypeError: unsupported operand type(s) for +: 'float' and 'datetime.datetime'。可能是因为这个系列只有几分之一秒? 可能需要用... pd.Series(float(data[' Time elapsed_sec'] ) + start_time...进行转换。 虽然我已经设法转换为日期时间格式 (%S),但浮点转换并没有起到作用,但是发生了另一个错误,它说“只能在日期时间上进行减法运算,但是运算符 [add] 已通过" ...还有其他想法吗?

以上是关于从开始时间和经过的秒数计算日期时间的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C++ 中计算下周六之前的秒数?

如何从日期字符串中获取经过的秒数?

java怎样计算两个日期之间的秒数

如何计算两个日期之间的秒数?

两个日期之间按小时分组的秒数

php日期时间函数