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)

工作完美!你能解释一下这里到底发生了什么吗。我仍然不明白时代的逻辑