Дата Панд с Юлиан Дэй
Я попытался найти это и был удивлен, что не смог ничего найти. Мы используем термин "юлианский день" для обозначения дня года независимо от месяца (т. Е. 1 февраля будет юлианским днем 32). Я не знаю, является ли это региональным термином и, возможно, почему я не могу найти ответы.
В основном у меня есть два файла. У одного есть стандартный формат даты с годом, месяцем, днем, часом. У другого есть год, юлианский день, час. Я пытаюсь выровнять их, используя функцию DataFrame от pandas, и не знаю, что делать с отсутствующими данными за месяц. Способна ли Панда конвертировать это изначально?
Я использую Python 3.3 и новейшую версию Pandas.
Спасибо!
2 ответа
Когда вы читаете в юлианском файле дат, вам просто нужно предоставить пользовательскую функцию анализа даты. Вот примеры:
import datetime
from io import StringIO
import pandas
datafile = StringIO("""\
jday,value
2013-01,1
2013-02,2
2013-100,8
2013-200,9
""")
dateparser = lambda x: datetime.datetime.strptime(x, '%Y-%j')
df = pandas.read_csv(datafile, parse_dates=True, date_parser=dateparser, index_col=[0])
Который дает df
из:
value
jday
2013-01-01 1
2013-01-02 2
2013-04-10 8
2013-07-19 9
Я держу эту страницу в закладках и удобную для "нетрадиционных" нужд анализа паролей, таких как эти. (Я не думаю, что юлианские дни странные - мы все время их используем в гидравлическом моделировании)
Пытаться dayofyear
, Юлианский день на самом деле совсем другое число к сведению, смотрите здесь
In [1]: pd.date_range('20130201',periods=5).dayofyear
Out[1]: array([32, 33, 34, 35, 36], dtype=int32)