2016-12-27 107 views
1

我在數據集開始日期(格式爲datetime64 [ns])和結束日期(格式爲datetime64 [ns])中有兩個變量。我使用以下代碼來獲取開始日期和結束日期之間的日期。熊貓無法將輸入轉換爲時間戳錯誤

pd.date_range(start = data['beginning_date'], end = data['end_date'], freq = 'D') 

但它拋出以下錯誤。

cannot convert input to timestamp 

爲什麼我會出現以上錯誤。我試圖改變如下,但它不起作用。

pd.date_range(start = data['beginning_date'], end = data['end_date'], freq = 'D').astype('datetime') 

並且還我想每一天爲單獨的記錄,例如:beginning_date = 01APR2015日期和結束日期= 30APR2015,我想每一天爲如下獨立的記錄。

01APR2015 
02APR2015 etc 

我怎樣才能得到它作爲一個單獨的記錄?

在此先感謝。

+0

請提供[最小,完整,可驗證的示例](http://stackoverflow.com/help/mcve) –

+0

想必你讀了[文檔]( http://pandas.pydata.org/pandas-docs/stable/generated/pandas.date_range.html)所以你會知道只有有效的參數類型是日期時間或字符串? – EdChum

回答

0

請你先幫忙格式化輸入,然後轉換就可以。

pd.date_range(start = '30-APR-2015', end = '05-MAY-2015', freq = 'D') 

和輸出將

DatetimeIndex(['2015-04-30', '2015-05-01', '2015-05-02', '2015-05-03', 
      '2015-05-04', '2015-05-05'], 
      dtype='datetime64[ns]', freq='D') 
+0

謝謝,爲了讓pd.date_range正常工作,我們需要遵循什麼特定的輸入格式?我的輸入數據格式爲datetime64 [ns],我需要改變它的格式? – ajay

+0

快速調試後,在這裏存在故障: 426如果啓動不是無: - > 427 start =時間戳(啓動) 429如果結束不是無: –

+0

我現在無法編輯我的註釋。所以我在這裏添加了它。 快速調試後,pandas.tslib.Timestamp .__ new__中存在失敗。 426如果開始不是無: - > 427開始=時間戳(開始) 並根據錯誤代碼,格式基於日期時間格式。您可以檢查代碼的詳細信息。 –

3

假設你有以下DF:

In [30]: df 
Out[30]: 
    beginning_date end_date 
0  2013-12-22 2014-01-01 
1  2009-12-14 2009-12-28 
2  2010-12-31 2011-01-11 

我想打電話時您嘗試使用的系列,而不是標pd.date_range()方法:

In [31]: pd.date_range(df.beginning_date, df.end_date) 
... 
skipped 
... 
TypeError: Cannot convert input to Timestamp 

那麼試試這個來代替:

In [32]: pd.date_range(df.beginning_date.min(), df.end_date.max()) 
Out[32]: 
DatetimeIndex(['2009-12-14', '2009-12-15', '2009-12-16', '2009-12-17', '2009-12-18', '2009-12-19', '2009-12-20', '2009-12-21', '2009-12-22', 
'2009-12-23', 
       ... 
       '2013-12-23', '2013-12-24', '2013-12-25', '2013-12-26', '2013-12-27', '2013-12-28', '2013-12-29', '2013-12-30', '2013-12-31', 
'2014-01-01'], 
       dtype='datetime64[ns]', length=1480, freq='D')