Я действительно новичок в Python и Datascience.
У меня есть набор данных с 100K + строками и похожими на 30 столбцами (два datetime, 27 целых чисел и 1 строка). Я хочу создать 31-й столбец, рассчитав разницу между двумя столбцами datetime и получить результат в считанные секунды. Кроме того, я хочу сделать «-5000» как минимальное отклонение между двумя датами.
Итак, чтобы упростить задачу, давайте сосредоточимся только на двух столбцах Datetime.
Цель состоит в том, чтобыперейти от этого:
first_datetime second_datetime
0 2019-03-13 04:35:30 2019-03-13 05:35:30
1 2019-03-13 05:35:30 2019-03-13 06:35:30
2 2019-03-13 05:35:30 2019-03-14 06:35:30
К этому:
diff first_datetime second_datetime
0 -3600 2019-03-13 04:35:30 2019-03-13 05:35:30
1 -10 2019-03-13 05:35:30 2019-03-13 05:35:40
2 -5000 2019-03-13 05:35:30 2019-03-14 05:35:40
Мне сказали, что функция .apply самая быстрая, поэтому я использовал ее, чтобы сделать эту функцию:
def calc_diff(row):
diff=int((row['first_datetime']-row['second_datetime']).total_seconds())
if diff<-5000:
return -5000
else:
return diff
И я использую его с функцией .apply:
df = pd.DataFrame([{'first_datetime': "2019-03-13 04:35:30", 'second_datetime': "2019-03-13 05:35:30"},{'first_datetime': "2019-03-13 05:35:30", 'second_datetime': "2019-03-13 05:35:40"}])
df['diff']=df.apply(calc_diff, axis=1)
Проблема в том, что я получаю ошибку памяти, я делаю что-то не так? Какой лучший способ достичь этого?