2013-11-14 2 views
2

это действительно быстрый один:добавить смещение столбца datetime64 в кадре данных

Я проникаю от д к панд, я пытаюсь добавить 1 нано к каждому из элемента в столбце Дата составления кадр данных 'шпион'

>>> spy 
<class 'pandas.core.frame.DataFrame'> 
Int64Index: 126 entries, 0 to 125 
Data columns (total 6 columns): 
Date  126 non-null values 
Open  126 non-null values 
High  126 non-null values 
Low  126 non-null values 
Close  126 non-null values 
Volume 126 non-null values 
dtypes: datetime64[ns](1), float64(4), int64(1) 

для illuatration, у меня есть этот 1 нано

ttt=np.datetime64(1,'ns') 

тогда я пытаюсь сделать:

[x+ttt for x in spy['Date']] 

я получил следующее сообщение об ошибке:

Traceback (most recent call last): 
    File "/tmp/py6868jTH", line 9, in <module> 
    [x+ttt for x in spy['Date']] 
TypeError: ufunc add cannot use operands with types dtype('O') and dtype('<M8[ns]') 

может кто-нибудь просветить меня, что случилось здесь? ttt и x должны быть одного типа, не так ли?

спасибо!

ответ

2

Вы не можете добавить данные. Вы должны использовать timedelta вместо:

>>> s = pd.Series(pd.date_range('2013-11-11', periods=3, freq='D')) 
>>> td = np.timedelta64(1,'ns') 
>>> s 
0 2013-11-11 00:00:00 
1 2013-11-12 00:00:00 
2 2013-11-13 00:00:00 
dtype: datetime64[ns] 
>>> s + td 
0 2013-11-11 00:00:00.000000001 
1 2013-11-12 00:00:00.000000001 
2 2013-11-13 00:00:00.000000001 
dtype: datetime64[ns] 
+1

привет, спасибо, это работает. тем не менее, мне все еще интересно узнать, почему я не могу сделать это здесь, что случилось с [x + td for x in spy ['Date']]? –

Смежные вопросы