Найти - Пользователи
Полная версия: Тип DateTime в одном месте проходит, в другом нет.
Начало » Python для новичков » Тип DateTime в одном месте проходит, в другом нет.
1
polinaruru
Добрый день.

Не могу понять, почему в одном месте сравнение проходит по формату 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 секундами прошло успешно, а второй он ругается?

Спасибо.


4kpt_IV
Откройте для себя arrow…
polinaruru
4kpt_IV,

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

 yt = datetime.timedelta(microseconds = 20000)
      
if (df_del_final_delta < yt) is True :
    print (df_del_final_delta)
else:
    print (df_del_final)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB