Python: разница во времени между столбцами, в которых есть пробелы, вызывает ошибку

#python #pandas

#python #pandas

Вопрос:

изучение py pandas и не может решить проблему вычитания времени.. Я хочу найти разницу во времени между двумя столбцами. довольно просто….

df[‘TimeDiff’] = (df[‘LogOut’] — df[‘LogIn’])

вызывает «TypeError: неподдерживаемые типы операндов для -: ‘str’ и ‘str'»

Я думаю, эта ошибка вызвана тем, что некоторые временные метки пусты… Но не могу быть уверен, поскольку я новичок в python…

Изображение таблицы здесь Изображение таблицы

Пожалуйста, сообщите.

Комментарии:

1. Это происходит потому df['LogOut'] , df['LogIn'] что, имеют тип str , поэтому сначала измените их в timestamp или datetime

Ответ №1:

Попробуйте использовать

 df['LogOut'] = pd.to_datetime(df['LogOut'])
df['LogIn'] = pd.to_datetime(df['LogIn'])
 

Это преобразует столбцы в datetime, который поддерживается.

Вы также можете заглянуть в пакет timedelta

Комментарии:

1. Да, а затем повторите df['TimeDiff'] = (df['LogOut'] - df['LogIn']) попытку.

2. Ваш вариант вызвал: ParserError: Строка не содержит даты: PS странно, поскольку в этих двух столбцах нет ничего, кроме временных меток… или пусты; (

3. Я бы предположил, что значение строки пустое, вы можете сделать df['col name'].fillna("value") , а затем попытаться преобразовать в datetime .

Ответ №2:

Столбцы входа / выхода из таблицы Excel были защищены…

Итак, я сохранил файл в формате .csv и обнаружил, что пустые ячейки на самом деле не были пустыми, они содержат по 8 пробелов в каждой

Попробовал: df[‘LogOut’].replace(» «, «»)

df[‘LogOut’].fillna(«0»)

и последнее…

df[‘LogOut’] = pd.to_datetime(df[‘LogOut’])

вызвал ту же ошибку… (ParserError: строка не содержит даты:)…

Ответ №3:

потребовалось некоторое время…

пустые ячейки вызывали проблему.

исправление

df[‘LogOut’] = pd.to_datetime(df[‘LogOut’], errors=’принудительный’)