У меня есть две даты для отправлений, одна - create_date, а другая - загруженная_дата, а также две колонки для получения и доставки отправлений.
pickup_address delivery_address Created_date loaded_date day_diff (mins)
a e 21/10/2018 21:40:09 22/10/2018 01:43 242.85
b d 26/11/2018 17:10:48 26/11/2018 17:10 60
c g 24/11/2018 16:22:26
a e 27/11/2018 07:41:27 27/11/2018 07:41 60
В столбце загруженных данных отсутствуют некоторые значения. Я хочу вменять их. Я отделил набор данных, который имеет ненулевые загруженные значения даты и нулевые загруженные значения даты. Например, нулевой набор данных
В не пропущенном наборе данныхloaded_date я вычислил разницу между созданной и загруженной разницей для разных мест получения и доставки в виде day_diff в минутах.
Non_missing_loadeddate['day_diff'] = Non_missing_loadeddate['org_loadeddate'] - Non_missing_loadeddate['createddate']
Non_missing_loadeddate['day_diff'] = Non_missing_loadeddate['day_diff'].dt.total_seconds()/60
Затем сгруппировали данные по уникальному списку пунктов получения и доставки со средней разницей во времени в минутах для каждой комбинации получения и доставки.
Avg_time = Non_missing_loadeddate.groupby(['pickup_address','delivery_address'],as_index = False)['day_diff'].mean()
Я хочу сопоставить уникальный список места получения и доставки в сгруппированном наборе данных с набором данных, который имеет нулевые значения для загруженных дат. Если есть совпадение, которое я хочу добавьте среднюю разницу во времени к Created_date, чтобы заполнить пропущенные значения загруженного_дата.
for index, row in Missing_loadeddate.iterrows():
avgtime = Avg_time.loc[(Avg_time['pickupstation_address'] ==
row['pickupstation_address'])& \
(Avg_time['deliverystation_address']==row['deliverystation_address']),'day_diff']
A = pd.to_timedelta(avgtime, unit='m')
if len(avgtime)>0:
new_loadeddate = row['createddate'] + A
else:
new_loadeddate = row['createddate']+ pd.to_timedelta(624, unit='m')
df1.set_value(index,'loadeddate','new_loadeddate')
Avg_time - это сгруппированный набор данных. Это последний код, с помощью которого я хочу сначала сгенерировать дату новой загрузки, а затем добавить ее в основной фрейм данных df1.
Я получаю следующую ошибку: не удалось преобразовать строку в метку времени
- Спасибо