如何将两个日期时间数组合并成一个日期时间数组?

3
我有两个包含日期时间对象的数组,但我只需要一个组合后的数组,其中第一个元素是日期,第二个元素是时间。 如果我使用

datetime.combine(date,time)

结果会是

TypeError: combine() argument 1 must be datetime.date, not numpy.ndarray

代码如下:
import numpy as np 
import matplotlib.pyplot as pp
import math
from datetime import datetime, time, date
from glob import glob
import pylab as plb
from scipy.optimize import curve_fit
from scipy import asarray as ar,exp
#importo i nomi dei files

fnames=glob('C:/Users/asus/Desktop/lab_astro/GALASSIA/galassia canale 43/*')
#conto i files per ogni tipo e inizializzo le variabili dove mettere i dati
num_file14=len(fnames)
signal14=[]
dt = datetime
dd = datetime


#leggo i files e riempio le variabiliChange working directory..
for n in range (0, num_file14):
    data14=np.loadtxt(fnames[n], comments ='END', delimiter=';', skiprows=1, usecols=(0,1,7),dtype=object,converters={ 0: lambda x: dd.strptime(x, "%d/%m/%Y"),1: lambda x: dt.strptime(x, "%H.%M.%S") , 7: np.float}) 
    dd=np.append(orario,data14[:,0])
    dt=np.append(orario,data14[:,1])
    d = datetime.combine(dd,dt)
    signal14=np.append(signal14,data14[:,2])

也许我的问题很幼稚,我是Python新手,但我真的需要这个程序能够工作...谢谢你的帮助!!

1
请查看此链接:https://dev59.com/b1vUa4cB1Zd3GeqPuH0A#7501549 - Samuel
你能提供dddt的值吗?我认为需要将其转换为datetime格式。 - Rahul K P
1个回答

2

你的变量 dddt 是以 numpy.ndarray 格式存储的。需要将其转换为 datetime 格式。请参考 datetime.combine(date,time) 的使用方法。

In [1]: import datetime
In [2]: time = datetime.time(12,12,12)
In [3]: date = datetime.date(2015,1,04)
In [4]: datetime.datetime.combine(date,time)
Out[1]: datetime.datetime(2015, 1, 4, 12, 12, 12)

我希望dd代表日期,dt代表时间。所以你的代码应该像这样改变。

datetime.datetime.combine(dd.date(),dt.time())

如果您正在使用迭代,您需要根据迭代更改代码。

谢谢,我明白了。现在,转换是我的问题!dd就像这样: Out[112]: array([<type 'datetime.datetime'>, datetime.datetime(2016, 5, 16, 0, 0), datetime.datetime(2016, 5, 16, 0, 0), ..., datetime.datetime(2016, 5, 16, 0, 0), datetime.datetime(2016, 5, 16, 0, 0), datetime.datetime(2016, 5, 16, 0, 0)], dtype=object) - ADHAFERA
请在注释中使用代码格式。这样更容易阅读。 - Rahul K P
我认为这是一个包含datetime变量元素的numpy.ndarray,所以您可以通过迭代它并使用datetime.combine(date,time)来操作。 - Rahul K P
我这样写对吗?for n in range(0, num_file14): orario = np.append(datetime.combine(dd[n], dt[n]))结果是:TypeError: combine() argument 1 must be datetime.date, not type我做错了什么? - ADHAFERA
@Agni,你的 dddt 格式相同。应该是日期和时间。它们都有日期和时间值。你打算如何将它们合并? - Rahul K P
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接