2016-12-17 2 views
1

Я пытаюсь изменить один столбец панд dataframe из формата, как это: 162000 до 16:20:00 (% H% M% S)Обращаясь столбцом панд dataframe из 4-х цифр к времени

I» уже пробовали это:

t = mydataframe['column name'] 
pd.to_datetime(t, format='%H%M%S') 

Но я получаю эту ошибку:

TypeError: 'long' object is unsliceable 

Однако, если я не использую параметр формата я получаю это:

1970-01-01 00:00:00.000162000 

Что здесь происходит?

EDIT:

t.dtype 
Name: column name, dtype: int64 

print t.head(5) 
0 162000 
1 161200 
2 162400 
3 163600 
4 164800 

t.to_dict() 
{0: 162000, 
1: 161200, 
2: 162400, 
3: 163600, 
4: 164800, ... 

EDIT2:

Ok, перезапуском ядро ​​ноутбука, решить эту проблему! Компьютеры а? : D

Хорошо, теперь у меня есть этот формат:

1900-01-01 16:20:00 

Как я могу изменить это так, что to_datetime дает мне только 16:20:00?

EDIT3:

Понял! Btw, ответ на мой второй вопрос: How to change the datetime format in pandas

+0

Работа для меня на Python 3.5, pandas 0.1 8.1 –

+0

Можете ли вы показать 't' и, возможно,' t.dtype' и 't.to_dict()' –

+0

@ juanpa.arrivillaga Я запускаю это на ноутбуке jupyter с Python 2.7.11 –

ответ

1

Чтобы получить временную часть вашего нового объекта datetime, вам необходимо использовать .dt.time.

pd.to_datetime(t, format='%H%M%S').dt.time 

Кроме того, необходимо переназначить вывод из выше вашего dataframe. Либо присвойте его новому столбцу, либо верните его в исходный столбец.

Чтобы назначить его к существующей колонке:

mydataframe['column name'] = pd.to_datetime(t, format='%H%M%S').dt.time 

Чтобы назначить его на новый столбец:

mydataframe['new column'] = pd.to_datetime(t, format='%H%M%S').dt.time 

В любом случае вы получаете dataframe, который выглядит следующим

Times 
0 16:20:00 
1 16:12:00 
2 16:24:00 
3 16:36:00 
4 16:48:00 
+0

Я уже нашел способ сделайте это с '.dt.strftime ("% H:% M ")', но этот кажется более простым :) Спасибо! –

+0

@RichardLuso То, что вы нашли способ сделать с 'strftime', превратит вашу колонку в колонку строки. То есть в обратном направлении анализа, который вы ранее делали. Вы не могли рассчитывать на это.С подходом @ Andy это настоящие, рассчитанные на время объекты времени. –

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