在儒略日期 python 中创建日期范围
Create a date range in julian date python
我必须在两个日期之间创建一个范围,日期之间的间隔为几分钟,在 Julian 日期中,我创建了一个代码,但是花了很多时间(例如 15 分钟)
我的代码是:
from astropy.time import Time
import pandas as pd
timedelta = "600s"
start = "2018-01-01"
end = "2018-06-30"
dateslist = pd.date_range(start,end, freq =timedelta ).tolist()
dates = pd.DataFrame({'col':dateslist})
dates["col2"] =""
for i in range(len(dateslist)):
#print(i," / ", len(dateslist))
dates["col2"][i] = (Time(str(dateslist[i]).replace(" ", "T"), format="fits").jd)
我尝试在没有 for 的情况下使用 Time,但出现错误
time = str(list(dates['col'])).replace("[Timestamp('","").replace(" Timestamp('","").replace("')","").replace(" ","T").split(",")
time
Time(time, format="fits")
ValueError: Input values did not match the format class fits
有什么方法可以快速做到这一点吗?
暂时谢谢,
使用DatetimeIndex.to_julian_date
:
dates["col2"] = pd.date_range(start,end, freq = timedelta).to_julian_date()
astropy 中的等效方法是:
from astropy.time import Time
import astropy.units as u
timedelta = 600 * u.s
start = "2018-01-01"
end = "2018-06-30"
dates["col2"] = np.arange(Time(start).jd, Time(end).jd, timedelta.to_value('day'))
另一种方法(也许是天文中更惯用的方式)是:
start = Time("2018-01-01")
end = Time("2018-06-30")
timedelta = 600 * u.s
dates = start + timedelta * np.arange((end - start) / timedelta)
这为您提供了一个向量 Time
对象,您可以通过 jd
属性将其转换为 JD。
我必须在两个日期之间创建一个范围,日期之间的间隔为几分钟,在 Julian 日期中,我创建了一个代码,但是花了很多时间(例如 15 分钟)
我的代码是:
from astropy.time import Time
import pandas as pd
timedelta = "600s"
start = "2018-01-01"
end = "2018-06-30"
dateslist = pd.date_range(start,end, freq =timedelta ).tolist()
dates = pd.DataFrame({'col':dateslist})
dates["col2"] =""
for i in range(len(dateslist)):
#print(i," / ", len(dateslist))
dates["col2"][i] = (Time(str(dateslist[i]).replace(" ", "T"), format="fits").jd)
我尝试在没有 for 的情况下使用 Time,但出现错误
time = str(list(dates['col'])).replace("[Timestamp('","").replace(" Timestamp('","").replace("')","").replace(" ","T").split(",")
time
Time(time, format="fits")
ValueError: Input values did not match the format class fits
有什么方法可以快速做到这一点吗?
暂时谢谢,
使用DatetimeIndex.to_julian_date
:
dates["col2"] = pd.date_range(start,end, freq = timedelta).to_julian_date()
astropy 中的等效方法是:
from astropy.time import Time
import astropy.units as u
timedelta = 600 * u.s
start = "2018-01-01"
end = "2018-06-30"
dates["col2"] = np.arange(Time(start).jd, Time(end).jd, timedelta.to_value('day'))
另一种方法(也许是天文中更惯用的方式)是:
start = Time("2018-01-01")
end = Time("2018-06-30")
timedelta = 600 * u.s
dates = start + timedelta * np.arange((end - start) / timedelta)
这为您提供了一个向量 Time
对象,您可以通过 jd
属性将其转换为 JD。