2016-07-25 76 views
1

我想以歐洲風格產生date_rangedd/mm/yyyy熊貓:歐式風格DATE_RANGE

import pandas as pd 

rng = pd.date_range(start = '1/09/2016', periods = 10, dayfirst = True) 

輸出如下:

DatetimeIndex(['2016-01-09', '2016-01-10', '2016-01-11', '2016-01-12', 
      '2016-01-13', '2016-01-14', '2016-01-15', '2016-01-16', 
      '2016-01-17', '2016-01-18'], 
      dtype='datetime64[ns]', freq='D') 

我也得到相同的輸出,而不dayfirst說法。

我在做什麼錯?

+0

沒什麼,顯示的格式將是你當前環境的顯示格式,我不認爲'dayfirst'是'kwarg',如果你想要一個不同的輸出格式,你需要做'rng.strftime('%d /%m/%Y')'但這會給你的字符串,而不是日期時間 – EdChum

+0

因此,沒有其他方式來生成歐洲格式的日期? –

+0

不是,因爲你要創建的是一個'datetimes'數組,顯示格式是一個完全不同的東西,這是爲了您的方便,底層類型在執行算術運算時是很明白的,真正的顯示格式在打印時很重要,或者在地塊中顯示 – EdChum

回答

0

只能使用DatetimeIndex.strftime,但失去了DatetimeIndex並獲得stringslist:通過評論

print (rng.strftime('%d/%m/%Y')) 
['09/01/2016' '10/01/2016' '11/01/2016' '12/01/2016' '13/01/2016' 
'14/01/2016' '15/01/2016' '16/01/2016' '17/01/2016' '18/01/2016'] 

編輯:

如果需要每天頻率,加參數freqdate_range和轉換to_datetimedate

import pandas as pd 

rng = pd.date_range(start = pd.to_datetime('1/09/2016', dayfirst = True), 
        periods = 10, freq = 'D') 
print (rng) 
DatetimeIndex(['2016-09-01', '2016-09-02', '2016-09-03', '2016-09-04', 
       '2016-09-05', '2016-09-06', '2016-09-07', '2016-09-08', 
       '2016-09-09', '2016-09-10'], 
       dtype='datetime64[ns]', freq='D') 
+0

因此,沒有其他方式可以生成歐洲格式的日期嗎? –

+0

不,datetime轉換爲相同的方式(美式),如果需要轉換它,請使用此解決方案。 – jezrael

+0

但這是不正確的。因爲我想要的開始日期是2016年9月1日,頻率爲10天。因此下一個日期應該是2016年9月2日。由於生成的日期本身是錯誤的,所以您建議的轉換沒有用處。 –