2016-08-02 168 views
0

這是我的數據:大熊貓 - ValueError異常的日期時間格式不匹配

date = df['Date'] 
print (date.head()) 

0 2015-01-02 
1 2015-01-02 
2 2015-01-02 
3 2015-01-02 
4 2015-01-02 
Name: Date, dtype: datetime64[ns] 

我的代碼:

def date_to_days(date): 
    return date2num(datetime.datetime.strptime(date, '%Y-%m-%d')) 

爲什麼會出現這個錯誤?

+0

這個問題似乎也是關於熊貓圖書館。請在你的問題中加入。 什麼樣的數據是日期?打印時會發生什麼?函數strptime需要一個字符串。由於它不會搜索字符串的日期部分,所以它是'愚蠢的',因此將您傳遞給datetime的字符串中的所有不必要的數據去掉。 – Munchhausen

+0

您是否試圖從'datetime'對象中提取日期? –

回答

0

它工作正常,沒有任何錯誤。

In [74]: from matplotlib.dates import date2num 

In [75]: df['Number of days'] = df['Date'].apply(lambda x: date2num(datetime.datetime.strptime(x, '%Y-%m-%d'))) 

In [76]: df 
Out[76]: 
     Date Number of days 
0 2015-01-02  735600.0 
1 2015-01-02  735600.0 
2 2015-01-02  735600.0 
3 2015-01-02  735600.0 
4 2015-01-02  735600.0 

通常,將變量分配給一個pandas系列對象是一種不好的做法。它可以搞砸了很多東西。

In [1]: def date_to_days(date): 
    ...:  return date2num(datetime.datetime.strptime(date, '%Y-%m-%d')) 

In [2]: df['Number of days'] = df['Date'].apply(date_to_days) 

In [3]: df 
Out[3]: 
     Date Number of days 
0 2015-01-02  735600.0 
1 2015-01-02  735600.0 
2 2015-01-02  735600.0 
3 2015-01-02  735600.0 
4 2015-01-02  735600.0 
+0

我認爲這是因爲他的日期表示實際上隱藏了也存在的時間... – bernie

+0

是的。我認爲可能是這樣。 –