Создать диапазон дат в julian date python - PullRequest
0 голосов
/ 02 мая 2018

Я должен создать диапазон между двумя датами, интервал между датами в несколько минут, в юлианской дате, я создаю код, но отнимает много времени (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)

Я пытался использовать Time без for, но получаю ошибку

time = str(list(dates['col'])).replace("[Timestamp('","").replace(" Timestamp('","").replace("')","").replace(" ","T").split(",")
time
Time(time, format="fits")

ValueError: входные значения не соответствуют формату, подходит

Есть ли способ сделать это быстро?

Спасибо, пока

Ответы [ 2 ]

0 голосов
/ 02 мая 2018

Эквивалентный путь в астропии будет:

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.

0 голосов
/ 02 мая 2018

Использование DatetimeIndex.to_julian_date:

dates["col2"] = pd.date_range(start,end, freq = timedelta).to_julian_date()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...