将字符串的numpy数组转换为datetime

68bkxrlz  于 2023-05-07  发布在  其他
关注(0)|答案(2)|浏览(166)

我很震惊,我已经在各种兔子洞里跑了这么长时间,试图弄清楚这个问题(我认为)应该是相对简单的。
我有一个numpy字符串数组保存为变量t,其中一些相关数据作为raw_data:

t = array(['20141017000000','20141017000001','20141017000002'],dtype='<U14')
raw_data = np.array([1,2,3],dtype='float')

日期格式为YYYYmmddHHMMSS
我只是想将其转换为与matplotlib兼容的datetime对象,以用于绘图目的。
我发现的各种答案不可避免地会导致错误,包括:
选项1

import matplotlib.dates as dates
convertedDate = dates.num2date(t)

Error: can't multiply sequence by non-int of type 'float'

选项#2(from here

from datetime import datetime
convertedDate = datetime.strptime(t, '%YY%mm%dd%HH%MM%ss')
Error: strptime() argument 1 must be str, not numpy.ndarray

选项#3(来自here

import numpy as np
convertedDate = [np.datetime64(x) for x in t]

虽然这个选项3可以工作,但输出对我来说并不太有意义,因为它看起来与原始字符串相同,例如convertedDate[0]返回numpy.datetime64('20141017000000')。而且当我试着把它画出来的时候,我得到了这个:

import matplotlib.pyplot as plt
plt.plot(convertedDate,raw_data)
OverflowError: int too big to convert

任何帮助都很感激。

1u4esq0p

1u4esq0p1#

可以使用pandas

# pip install pandas
import pandas as pd

dti = pd.to_datetime(t, format='%Y%m%d%H%M%S')

输出:

>>> dti
DatetimeIndex(['2014-10-17 00:00:00', '2014-10-17 00:00:01',
               '2014-10-17 00:00:02'],
              dtype='datetime64[ns]', freq=None)

>>> dti.values
array(['2014-10-17T00:00:00.000000000', '2014-10-17T00:00:01.000000000',
       '2014-10-17T00:00:02.000000000'], dtype='datetime64[ns]')
hvvq6cgz

hvvq6cgz2#

我猜你可以用这个方法datetime.strptime(date_string, format)

相关问题