我需要在单独的函数中从pandas帧值转换日期:
def myfunc(lat, lon, when):
ts = (when - np.datetime64('1970-01-01T00:00:00Z','s')) / np.timedelta64(1, 's')
date = datetime.datetime.utcfromtimestamp(ts)
print("Numpy date= ", when, " Python date= ", date)
return float(90) - next_func(lat, lon, date)
调用此函数:
new_df['new_column'] = np.vectorize(my_func)(lat, lon, new_df['datetime(LT)'])
但它会引起错误:
ufunc subtract cannot use operands with types dtype('int64') and dtype('<M8[s]')
如何将numpy datetime64 [ns]转换为python datetime?
4条答案
按热度按时间swvgeqrz1#
我想知道你是否需要所有这些转换工作。使用正确的时间单位,
datetime64
可以直接生成datetime
对象。我不确定你的
when
变量,但让我们假设它来自pandas
,类似于DatetimeIndex
:等价的numpy数组
使用
[ns]
,结果是一个大整数,某种类型的“时间戳”。但是如果我将时间单位转换为秒,甚至微秒(us):结果是
datetime
对象的列表。wa7juj8i2#
我更喜欢这种解决方法,因为有时np.datetime64具有不同的分辨率
对于时间戳
比如说
输出将是
2005-02-25 00:00:00
2009-01-01T00:00:00.00000020
2009-01-01 00:00:00
gwo2fgha3#
试试这个代码
要将numpy datetime64[ns]转换为python datetime,只需尝试以下代码段
1l5u6lss4#
如果你只是想查询另一个日期,你可以把日期写成字符串: