2013-12-10 8 views
1

Я попытался найти это и был удивлен, что ничего не нашел. Мы используем термин «Юлианский день» для обозначения дня года независимо от месяца (т. Е. 1 февраля - юлианский день 32). Я не знаю, является ли это региональным термином и, может быть, почему я не могу найти ответы.Pandas datetime with Julian Day

В основном у меня есть два файла. У одного есть стандартный формат даты: год, месяц, день, час. У другого есть год, юлианский день, час. Я пытаюсь выровнять их с помощью функции pandas DataFrame и не знаю, что делать с отсутствующими данными месяца. Может ли Pandas преобразовать это изначально?

Я использую python 3.3 и новейшую версию Pandas.

Спасибо!

ответ

4

Когда вы читаете в файле даты юлианского, вам просто нужно предоставить пользовательскую функцию парсинга даты. Вот примеры:

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 

Я держу this page закладку и удобным для «нетрадиционных» потребностей даты разбора, таких как эти. (Я на самом деле не думаю, что юлианские дни странны - мы все время используем их в гидравлическом моделировании)

2

Пробег: dayofyear. Джулиан день на самом деле совсем другое число FYI см here

In [1]: pd.date_range('20130201',periods=5).dayofyear 
Out[1]: array([32, 33, 34, 35, 36], dtype=int32) 
+0

Я понимаю, что на самом деле это не ответ на ваш вопрос, а обратный. – Jeff

Смежные вопросы