2017-08-12 10 views
1

1年に1日のペアのリストを取得するには何らかの方法が必要です。年は問題ではありませんが、うるう年になることはできません。このような年(何年)の日のリストをd-mとして取得

何か:

[01-01, 01-02, 01-03, ..., 12-30, 12-31]

きっとpd.date_rangeを使用してこれを行うには、いくつかのpandorable方法はありますか?

答えて

5

あなたはDatetimeIndex.strftimeでデフォルトD FREQ(省略可能)でdate_rangeを使用することができます。また、日Febrary 29使用200820122016(年割り切れる4)を飛躍したい場合

#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'] 

+0

おかげで、私が探していたまさに; –

+1

は 'のstrftime( '%M-%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を取得して、 の参照日付を定義し、結果のタイムスタンプを計算する場所を指定しました。 特定の単位で数値を解析します。デフォルトは、一般‘unix epoch’又は呼ばれ1970-01-01 00:00:00 デフォルト、origin='unix'、に設定されている

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) 

:開始日として1960-01-01で(例えばGH11276GH11745

、 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) 
関連する問題