Python 转换为';致朱利安·达特()';至';np.datetime64';
考虑下面的数组Python 转换为';致朱利安·达特()';至';np.datetime64';,python,pandas,numpy,Python,Pandas,Numpy,考虑下面的数组 dt = DatetimeIndex(['2016-01-01', '2016-01-01', '2016-01-21', '2016-01-21'], dtype='datetime64[ns]', name=u'date', freq=None) 我将上面的转换为_julian_date()dtype j = dt.to_julian_date() Float64Index([2457388.5, 2457388.5, 2457408.5, 2457408.5], dtyp
dt = DatetimeIndex(['2016-01-01', '2016-01-01', '2016-01-21', '2016-01-21'], dtype='datetime64[ns]', name=u'date', freq=None)
我将上面的转换为_julian_date()
dtype
j = dt.to_julian_date()
Float64Index([2457388.5, 2457388.5, 2457408.5, 2457408.5], dtype='float64')
如何将j
转换回dt
我试过了
dt = pd.to_datetime(j, errors = 'coerce')
它将j
转换回datetime对象,但值不同,下面是输出
DatetimeIndex(['1970-01-01 00:00:00.002457388',
'1970-01-01 00:00:00.002457388',
'1970-01-01 00:00:00.002457408',
'1970-01-01 00:00:00.002457408'],
dtype='datetime64[ns]', freq=None)
是很久以前的天数。时间戳纪元之前的时间。我们指的是跟踪时间系统开始跟踪时间的开始时间。对于时间戳,即“1970-01-01”。我要做的是用pd.to\u datetime(0,unit='s')
获取时间戳
历元。这是第一个可能的pandas.Timestamp
。然后,我通过在时间戳上运行to_Julian_Date()
来分配从儒略日期开始的时间戳的天数。现在我有了从儒略开始日期到时间戳
纪元的天数,我从j
中的每个儒略日期中减去它,这就成为时间戳
纪元的天数(或'1970-01-01'
)。然后我可以使用pd.to_datetime(j-epoch,unit='D')
给我时间戳
,其中我的每个值表示从时间戳开始的天数
我希望这是清楚的;-)
首先查找pd.Timestamp
epoch的julian_日期
epoch = pd.to_datetime(0, unit='s').to_julian_date()
然后使用参数unit='D'
pd.to_datetime(j - epoch, unit='D')
DatetimeIndex(['2016-01-01', '2016-01-01', '2016-01-21', '2016-01-21'], dtype='datetime64[ns]', freq=None)
工作完美!你能解释一下这里到底发生了什么吗。我仍然不明白时代的逻辑