2013-04-23 11 views
11

Aşağıdaki kod parçası için tarihleri ​​dönüştürülemez:datetime64

import pandas as pd 
import numpy as np 

data = pd.DataFrame({'date': ('13/02/2012', '14/02/2012')}) 
data['date'] = data['date'].astype('datetime64') 

(pencereler) bir makine üzerinde çalışıyor ve başka (linux) üzerinde çalışmaz. Hem uyuşmuş hem de pandalar her ikisine de yüklenir.

alıyorum hatadır:

ValueError: Cannot create a NumPy datetime other than NaT with generic units 

bu hata ne anlama geliyor? Bunu ilk defa görüyorum ve bulabildiğim çok fazla şey yok. Bazı eksik bağımlılık mı?

+0

Numpy sürümleri her iki makinede de aynı mıdır? ('print np .__ version__'). Doğru hatırlamıyorsam, 'datetime64' oldukça yeni bir eklentidir. – mgilson

+0

1.6.2 çalıştığı makinede 1.6.0 ve başka birinde 1.7.0. – sashkello

cevap

16

Bunun yerine bunu yapın. Pandalar datestimes'ı dahili olarak datetime64[ns] olarak tutar. Bu gibi dönüşümler çok buggy (çeşitli numpy sürümünde sorunlar nedeniyle, özellikle 1.6.2). Pandalar rutinleri kullanın, sonra gerçek zaman nesneleri nesneler gibi çalışır. Ne yapmaya çalışıyorsun?

In [30]: pandas.to_datetime(data['date']) 
Out[30]: 
0 2012-02-13 00:00:00 
1 2012-02-14 00:00:00 
Name: date, dtype: datetime64[ns] 
+0

Mükemmel çalışır! Teşekkürler! Ben sadece tarihler dizeleri ile bir dosya var ve bu yüzden ben çalışabileceğim nesneler onları dönüştürmek ... Şerefe :) – sashkello

+0

2000 Tebrikler, arkadaşı – sashkello

+0

ha .... Ayrıca '' parse_dates = True'' geçmeyi deneyebilirsiniz read_csv (docs'daki diğer seçenekler de) – Jeff