2013-12-10 234 views
1

我试图寻找这一点,很惊讶,我找不到任何东西。我们使用“Julian Day”一词来表示一年中的哪一天(即2月1日是Julian Day 32)。我不知道这是否是一个区域术语,也可能是我找不到任何答案。熊猫日期时间与Julian日

基本上我有两个文件。一个具有年,月,日,小时的标准日期格式。另一个是年,朱连日,小时。我尝试使用pandas DataFrame函数对齐它们,不知道如何处理丢失的月份数据。熊猫是否能够原生转换?

我正在使用python 3.3和最新版本的Pandas。

谢谢!

回答

4

当您在Julian日期文件中读取,你只需要提供一个自定义的日期解析功能。这里有一个例子:

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。儒略日实际上是一个完全不同的数字仅供参考,请参阅here

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

我意识到这实际上不是你的问题的答案,而是相反的。 – Jeff