Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 19, 2016 16:14:43

polinaruru
Зарегистрирован: 2016-03-23
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Тип DateTime в одном месте проходит, в другом нет.

Добрый день.

Не могу понять, почему в одном месте сравнение проходит по формату DateTime удачно, в другом ругается на стринговый объект.

есть таблица. Я добавляю новый столбец, с разницей по времени с предыдущим значением по столбцу E_TIME:

 df['E_DELTA'] = df.E_TIME.diff()

И далее убираю все строки где, разница больше двух секунд.
df_del_final = df_del[df['E_DELTA'] < '00:00:02.000000']
На этом этапе все ок - на стринг ругани нет. Идем дальше.

Дальше я считаю кол-во полученных записей:
 count_x = len(df_del_final.index)

И ставлю условие:
 df_del_final_delta = df_del_final['E_DELTA']
if df_del_final['E_DELTA'].any() < '00:00:00.020000':
    print (df_del_final_delta)
else:
    print (df_del_final)

И тут мне возвращается ошибка:
if df_del_final.any() < ‘00:00:00.020000’:
TypeError: unorderable types: numpy.ndarray() < str()

Дельта по времени считалась из столбца с типом:
 df.E_TIME = df.E_TIME.apply(lambda x: x[:-1])
df.E_TIME = pd.to_datetime(df.E_TIME, format='%Y-%m-%d %H:%M:%S.%f')
и вид 2016-08-19 15:48:12.123456

То бишь меня интересует 6 знаков после секунды. Мне важны микросекунды.

Почему первый раз сравнение с 2 секундами прошло успешно, а второй он ругается?

Спасибо.


Отредактировано polinaruru (Авг. 19, 2016 16:25:34)

Офлайн

#2 Авг. 19, 2016 17:51:14

4kpt_IV
Зарегистрирован: 2016-01-08
Сообщения: 999
Репутация: +  49  -
Профиль   Отправить e-mail  

Тип DateTime в одном месте проходит, в другом нет.

Откройте для себя arrow…

Офлайн

#3 Авг. 22, 2016 16:27:03

polinaruru
Зарегистрирован: 2016-03-23
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Тип DateTime в одном месте проходит, в другом нет.

4kpt_IV,

Спасибо за совет, но мне бы в первую очередь pandas & nampy освоить. Я уверена, что тут можно справиться без arrow.
Вы же модуль имели в виду?

Офлайн

#4 Авг. 22, 2016 18:30:10

polinaruru
Зарегистрирован: 2016-03-23
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Тип DateTime в одном месте проходит, в другом нет.

В общем, поняла, что не так. Сравнение массива дает булев.
Решила проблему так:

 yt = datetime.timedelta(microseconds = 20000)
      
if (df_del_final_delta < yt) is True :
    print (df_del_final_delta)
else:
    print (df_del_final)

Отредактировано polinaruru (Авг. 22, 2016 18:30:27)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version