Цель:
Я хотел бы использовать Timedelta для добавления часов в десятичном формате к существующей временной метке. Мой текущий код вызывает у меня проблему - вероятно, потому, что я не знаю, как не создавать список (некоторое время боролся за то, как решать проблемы). Хех.
У меня есть фрейм данных с именем 'df', который выглядит примерно так:
+---------------------+----------+
| Time | AddHours |
+---------------------+----------+
| 2019-11-13 09:30:00 | 3.177481 |
| 2019-11-13 09:30:00 | 2.752435 |
| 2019-11-13 09:30:00 | 3.129910 |
| 2019-11-13 09:30:00 | 3.078170 |
| 2019-11-13 09:30:00 | 2.105979 |
| 2019-11-13 09:30:00 | 3.086892 |
+---------------------+----------+
Типы данных поля
Поскольку, вероятно, полезно знать тип данных для этого упражнения:
df.dtypes возвращает:
Time datetime64[ns]
AddHours float64 <-- The units are hours. Eg 3.1202 hours
Существующий / код проблемы
Теперь - часть, с которой у меня возникли проблемы.
В настоящее время у меня есть:
df['Time'] = df['Time'] + [pd.Timedelta(hours=ts) for ts in df['AddHours']]
Это возвращает ошибку, которую я не знаю, как преодолеть. Я предполагаю, что "для ts в df ['AddHours']" возвращает список, в который я просто хочу добавить df ['Time'] + df ['AddHours'] для каждой строки в кадре данных, и что Timedelta позволяет мне рассматривать AddHours как десятичные часы.
Есть какие-нибудь яркие идеи о том, где я ошибаюсь, и как это исправить?
Ошибка:
TypeError: unsupported operand type(s) for +: 'DatetimeIndex' and 'list'