2016-03-31 2 views
1

У меня есть pandas DataFrame, где я пытаюсь изменить одну из временных меток ячейки на другую временную метку. Однако я не получаю ожидаемого результата. Вот что у меня есть:pandas: изменение метки времени в ячейке приводит к неправильному значению

>>> df = pd.DataFrame({"d": [np.datetime64('2013-07-14T10:30:30.521Z'), np.datetime64('2013-07-21T10:30:30.521Z')]}) 
>>> df 
          d 
0 2013-07-14 10:30:30.521000 
1 2013-07-21 10:30:30.521000 
>>> df.iloc[-1, df.columns.get_loc("d")] = np.datetime64('2013-08-29T10:30:30.521Z') 
>>> df 
           d 
0 2013-07-14 10:30:30.521000 
1 1970-01-01 00:22:57.772230521 

Как пример иллюстрирует, метка времени я получаю за df.loc[1, "d"] не один я назначаю в этой ячейке. Я не понимаю этого поведения или где я ошибаюсь. Есть ли другой способ изменить значение временной метки?

Редактировать: вышеприведенный пример. Мой фактический df имеет много столбцов, а не только 1. Я использую версию pandas 0.16.1 (и не могу изменить версию).

+0

Ваш пример кода работает, как ожидалось для меня. Какие версии pandas/numpy вы используете? – root

ответ

1

, так как ваш ДФ имеет только один столбец, вы можете сделать это следующим образом:

In [29]: df 
Out[29]: 
         d 
0 2013-07-14 10:30:30.521 
1 2013-07-21 10:30:30.521 

In [30]: df.iloc[-1] = pd.to_datetime('2013-08-29T10:30:30.521Z') 

In [31]: df 
Out[31]: 
         d 
0 2013-07-14 10:30:30.521 
1 2013-08-29 10:30:30.521 

UPDATE: если у вас есть несколько столбцов в вашем DF:

In [47]: df 
Out[47]: 
         d a 
0 2013-07-14 10:30:30.521 1 
1 2013-07-21 10:30:30.521 1 

In [48]: df.loc[df.index[-1], 'd'] = pd.to_datetime('2013-08-29T10:30:30.521Z') 

In [49]: df 
Out[49]: 
         d a 
0 2013-07-14 10:30:30.521 1 
1 2013-08-29 10:30:30.521 1 
+0

Извините, я должен был уточнить. Выше был просто простой пример; у моего фактического df больше столбцов. – LateCoder

+0

@LateCoder, я обновил свой ответ - пожалуйста, отметьте – MaxU

+0

Это все еще дает неправильную отметку времени. Вероятно, это связано с моей версией pandas, но я не могу это изменить. – LateCoder

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