рассчитать время окончания от времени начала и продолжительности (минуты) с помощью панд.Ошибка при стандартном подходе - PullRequest
0 голосов
/ 13 мая 2018

у меня есть датафрейм панд:

Start_time | Продолжительность (минуты)

2018-03-01 16:37:09 | 155

2018-03-01 07:02:10 | 5

2018-03-01 13:07:09 | 250

2018-03-01 20:46:34 | 180

2018-03-01 07:45:49 | 5

Я хочу выводить как

Start_time | Время окончания 2018-03-01 16:37:09 | 2018-03-01 19: 12: 09

2018-03-01 07:02:10 | 2018-03-01 07: 07: 10

2018-03-01 13:07:09 | 2018-03-01 17: 17: 09

2018-03-01 20:46:34 | 2018-03-01 23: 46: 34

2018-03-01 07:45:49 | 2018-03-01 07: 50: 49

Я использую следующий код и получаю выходные данные для 5-10 строк, как требуется, с предупреждением, и когда я применил тот же код к полному набору данных, он показывает ошибку как ** TypeError: Невозможно сравнить тип 'Timestamp' с типом ' INT» **

time_temp ['End_time'] = pd.DatetimeIndex (time_temp ['Start_time']) + pd.to_timedelta (time_temp ['Duration'], единица измерения = 'm')

Ошибка: невозможно сравнить тип «Отметка времени» с типом «int» Предупреждение: /usr/local/lib/python3.5/dist-packages/ipykernel_launcher.py:1: SettingWithCopyWarning: Значение пытается быть установлено для копии среза из DataFrame. Попробуйте использовать .loc [row_indexer, col_indexer] = значение вместо

См. Предостережения в документации: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy "" "Точка входа для запуска ядра IPython.

1 Ответ

0 голосов
/ 13 мая 2018

Вам необходимо изменить DatetimeIndex на to_datetime для удаления первой ошибки:

Невозможно сравнить тип 'Timestamp' с типом 'int' **

time_temp['End_time'] = (pd.to_datetime(time_temp['Start_time']) + 
                         pd.to_timedelta(time_temp['Duration'], unit='m'))
print (time_temp)
            Start_time  Duration            End_time
0  2018-03-01 16:37:09       155 2018-03-01 19:12:09
1  2018-03-01 07:02:10         5 2018-03-01 07:07:10
2  2018-03-01 13:07:09       250 2018-03-01 17:17:09
3  2018-03-01 20:46:34       180 2018-03-01 23:46:34
4  2018-03-01 07:45:49         5 2018-03-01 07:50:49

Во избежание второго SettingWithCopyWarning, очевидно, потребуется copy при некоторой фильтрации, потому что, если вы измените значения в df позже, вы обнаружите, что изменения не распространяются обратно на исходные данные (time_temp), и что Панды предупреждает:

time_temp = df[some filtering].copy()

Должны быть другие проблемы, проверьте , как бороться с настройкой копирования в пандах

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...