gpt4 book ai didi

python - 从 'to_julian_date()' 转换为 'np.datetime64'

转载 作者:行者123 更新时间:2023-11-28 21:44:07 24 4
gpt4 key购买 nike

考虑下面的数组

dt = DatetimeIndex(['2016-01-01', '2016-01-01', '2016-01-21', '2016-01-21'], dtype='datetime64[ns]', name=u'date', freq=None)

我将上面的 to_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)

最佳答案

Julian dates是很久以前的天数。 Pandas 时间戳时代之前的时间。我们指的是跟踪时间系统开始跟踪时间的开始。对于 Timestamp,即“1970-01-01”。我所做的是使用 pd.to_datetime(0, unit='s') 获取 Timestamp 纪元。这是第一个可能的 pandas.Timestamp。然后,我通过在 Timestamp 上运行 to_julian_date() 来分配该 Timestamp 从 Julian Date 开始的天数。现在我有了从 Julian 开始日期开始到 Timestamp 纪元的天数,我从 j 中的每个 Julian 日期中减去它,这就变成了Timestamp 纪元(或 '1970-01-01')的天数。然后我可以使用 pd.to_datetime(j - epoch, unit='D') 给我 Timestamps,其中我的每个值代表从 时间戳 纪元。

我希望这是清楚的 ;-)

首先找到 pd.Timestamp 纪元的 julian_date

epoch = pd.to_datetime(0, unit='s').to_julian_date()

然后使用参数 unit='D' 通过 pd.to_datetime 完成转换

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)

关于python - 从 'to_julian_date()' 转换为 'np.datetime64',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41154423/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com