使用熊猫将儒略转换为日历日期



我正在尝试使用将Julian代码转换为Panda中的日历日期

pd.to_datetime(43390, unit = 'D', origin = 'Julian')

这给了我ValueError:原始Julian无法转换为时间戳

您需要设置origin='julian'

pd.to_datetime(43390, unit = 'D', origin = 'julian')

但是这个数字(43390(抛出

OutOfBoundsDatetime: 43390 is Out of Bounds for origin='julian'

因为界限是从2333836到2547339
(时间戳('1677-2009-21 12:00:00'(到时间戳('2262-04-11 12:00:00'(

方法1-使用Julian作为原点不起作用

方法2-使用excel开始日期来计算其他日期。所有其他日期值将从excel默认开始日期引用。

终于对我起作用了。

pd.to_datetime(43390, unit = 'D', origin=pd.Timestamp("30-12-1899"))


以下代码仅适用于6位julian值。它还处理闰年和非闰年的日历日期。

儒略日期被认为是";CYYDDD">。其中C表示世纪,YY代表年份,DDD则代表总天数,然后在天数和月份中进一步定义。

import pandas as pd
from datetime import datetime
jul_date = '120075'
add_days = int(jul_date[3:6])
cal_date = pd.to_datetime(datetime.strptime(str(19+int(jul_date[0:1]))+jul_date[1:3]+'-01-01','%Y-%m-%d'))-timedelta(1)+pd.DateOffset(days= add_days)
print(cal_date.strftime('%Y-%m-%d'))


输出:2020-03-15
无时间增量(1(:2020-03-16


此处使用datetime.strptime函数将日期类型从字符串转换为日期。
%Y用4位数字表示年份(1980年(
%m&%d用数字表示月份和日期。
strftime("%Y-%m-%d"(用于从日期中删除时间戳。
timedelta(1(:-它用于从日期减去一天,因为我们将年份与"01-01"连接起来。因此,当总天数被拆分为天和月时,一天就不会是多余的了。

最新更新