Добавить значение в основной столбец данных для заполнения пропущенных значений - PullRequest
0 голосов
/ 24 февраля 2020

У меня есть две даты для отправлений, одна - 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.

Я получаю следующую ошибку: не удалось преобразовать строку в метку времени

- Спасибо

...