如何解决将整数秒值转换为日期时间蟒蛇
我正在尝试找出将秒数数组自动转换为日期时间的最简单方法。我非常熟悉将1970年的秒转换为日期时间,但是这里的值是给定一天中经过的秒数。例如,14084是2011年11月11日过去的秒数,我能够在下面生成日期时间。
str(dt.timedelta(seconds = 14084))
Out[245]: '3:54:44'
dt.datetime.combine(date(2011,11,11),time(3,54,44))
Out[250]: datetime.datetime(2011,3,44)
有没有更快的数组转换方法。
解决方法
numpy
支持使用timedelta类型的日期时间数组来处理它们:
https://numpy.org/doc/stable/reference/arrays.datetime.html
例如您可以这样做:
import numpy as np
date_array = np.arange('2005-02','2005-03',dtype='datetime64[D]')
date_array += np.timedelta64(4,'s') # Add 4 seconds
如果您有几秒钟,可以将其转换为timedelta数组,并将其添加到固定的日期时间
,说你有
seconds = [14084,14085,15003]
您可以使用熊猫
import pandas as pd
series = pd.to_timedelta(seconds,unit='s') + pd.to_datetime('2011-11-11')
series = series.to_series().reset_index(drop=True)
print(series)
0 2011-11-11 03:54:44
1 2011-11-11 03:54:45
2 2011-11-11 04:10:03
dtype: datetime64[ns]
或列表理解
list_comp = [datetime.datetime(2011,11,11) +
datetime.timedelta(seconds=s) for s in seconds]
print(list_comp)
[datetime.datetime(2011,3,54,44),datetime.datetime(2011,45),4,10,3)]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。