2017-08-12 25 views

回答

5

您可以使用date_range默認D頻率(可省略)與DatetimeIndex.strftime

#day-month 
a = pd.date_range('2015-01-01', '2015-12-31').strftime('%d-%m') 
print (a[:5]) 
['01-01' '02-01' '03-01' '04-01' '05-01'] 
print (a[-5:]) 
['27-12' '28-12' '29-12' '30-12' '31-12'] 

#month-day 
a = pd.date_range('2015-01-01', '2015-12-31').strftime('%m-%d') 
print (a[:5]) 
['01-01' '01-02' '01-03' '01-04' '01-05'] 
print (a[-5:]) 
['12-27' '12-28' '12-29' '12-30' '12-31'] 

如果還想閏日Febrary 29使用200820122016(一年整除4)

+0

感謝,正是我一直在尋找;) –

+1

應該是'的strftime( '%間%d')'? – Zero

2
pd.date_range('2001-01-01', periods=365).strftime('%m-%d') 

,或者使用相對較新的(在熊貓加入0.20.0)origin特徵:

pd.to_datetime(np.arange(365), unit='D').strftime('%m-%d') 

what's new

.to_datetime()已經獲得的原點參數

to_datetime()具有獲得了一個新參數origin,定義了一個 參考日期,從那裏計算得到的時間戳 用指定的特定單位解析數值。 (GH11276GH11745

例如,1960-01-01作爲起始日期:

In [14]: pd.to_datetime([1, 2, 3], unit='D', origin=pd.Timestamp('1960-01-01')) 
Out[14]: DatetimeIndex(['1960-01-02', '1960-01-03', '1960-01-04'], dtype='datetime64[ns]', freq=None) 

默認設置在origin='unix',默認爲1970-01-01 00:00:00 ,其通常被稱爲‘unix epoch’或POSIX時間。這 是以前的默認值,所以這是一個向後兼容的更改。

In [15]: pd.to_datetime([1, 2, 3], unit='D') 
Out[15]: DatetimeIndex(['1970-01-02', '1970-01-03', '1970-01-04'], dtype='datetime64[ns]', freq=None)