2016-08-02 111 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

是的。我认为可能是这样。 –