#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=’принудительный’)