Дата Панд с Юлиан Дэй

Я попытался найти это и был удивлен, что не смог ничего найти. Мы используем термин "юлианский день" для обозначения дня года независимо от месяца (т. Е. 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)
Другие вопросы по тегам