Невозможно выполнить функцию timedelta, используя функцию apply-lambda в python - PullRequest
0 голосов
/ 10 июня 2019

У меня есть фрейм данных панд с днями, минутами и часами в виде отдельных чисел.Я пытаюсь создать один столбец в формате даты и времени.Я могу добавить дни и часы, используя функцию timedelta, но не минуты.

Я изучил различные существующие коды Python - но не смог понять, что здесь происходит не так.Он работает для 2 из 3 столбцов, тот же алгоритм не работает для третьего столбца.

  • Тип данных соответствует
  • Формула похожа
df_training['hour'] = df_training['timestamp'].apply(lambda x: x.split(':')[0]).astype('float64')
df_training['min'] = df_training['timestamp'].apply(lambda x: x.split(':')[1]).astype('float64')
df_training['day'] = df_training['day'].astype('float64')

df_training['date_time_2'] = df_training['day'].apply(lambda x: date_base+ timedelta(days = x))
df_training['date_time_2'] = df_training[['date_time_2','hour']].apply(lambda x: x.date_time_2 +                                                                       timedelta(hours = x.hour), axis = 1)```

df_training['date_time_2'] = df_training[['date_time_2','min']].apply(lambda x: x.date_time_2.timedelta(minutes = x.min), axis = 1)

Получено сообщение об ошибке

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-72-0ec3568f21b6> in <module>
----> 1 df_training['date_time_2'] = df_training[['date_time_2','min']].apply(lambda x: x.date_time_2.timedelta(minutes = x.min), axis = 1)

~/anaconda3/lib/python3.7/site-packages/pandas/core/frame.py in apply(self, func, axis, broadcast, raw, reduce, result_type, args, **kwds)
   6485                          args=args,
   6486                          kwds=kwds)
-> 6487         return op.get_result()
   6488 
   6489     def applymap(self, func):

~/anaconda3/lib/python3.7/site-packages/pandas/core/apply.py in get_result(self)
    149             return self.apply_raw()
    150 
--> 151         return self.apply_standard()
    152 
    153     def apply_empty_result(self):

~/anaconda3/lib/python3.7/site-packages/pandas/core/apply.py in apply_standard(self)
    255 
    256         # compute the result using the series generator
--> 257         self.apply_series_generator()
    258 
    259         # wrap results

~/anaconda3/lib/python3.7/site-packages/pandas/core/apply.py in apply_series_generator(self)
    284             try:
    285                 for i, v in enumerate(series_gen):
--> 286                     results[i] = self.f(v)
    287                     keys.append(v.name)
    288             except Exception as e:

<ipython-input-72-0ec3568f21b6> in <lambda>(x)
----> 1 df_training['date_time_2'] = df_training[['date_time_2','min']].apply(lambda x: x.date_time_2.timedelta(minutes = x.min), axis = 1)

AttributeError: ("'Timestamp' object has no attribute 'timedelta'", 'occurred at index 0')
...