Я работаю со столбцами UPC (product #), date_expected и amount_picked, и мне нужно, чтобы мои данные были организованы так, чтобы отображать общее количество за день (для каждого дня) для каждого UPC. Пример данных ниже:
UPC quantity_picked date_expected
0 0001111041660 1.0 2019-05-14 15:00:00
1 0001111045045 1.0 2019-05-14 15:00:00
2 0001111050268 1.0 2019-05-14 15:00:00
3 0001111086132 1.0 2019-05-14 15:00:00
4 0001111086983 1.0 2019-05-14 15:00:00
5 0001111086984 1.0 2019-05-14 15:00:00
... ... ...
39694 0004470036000 6.0 2019-06-24 20:00:00
39695 0007225001116 1.0 2019-06-24 20:00:00
Я смог успешно организовать свои данные таким образом, используя приведенный ниже код, но выходные данные не содержат дат с количеством_пика = 0
orders = pd.read_sql_query(SQL, con=sql_conn)
order_daily = orders.copy()
order_daily['date_expected'] = order_daily['date_expected'].dt.normalize()
order_daily['date_expected'] = pd.to_datetime(order_daily.date_expected, format='%Y-%m-%d')
# Groups by date and UPC getting the sum of quanitity picked for each
# then resets index to fill in dates for all rows
tipd = order_daily.groupby(['UPC', 'date_expected']).sum().reset_index()
# Rearranging of columns to put UPC column first
tipd = tipd[['UPC','date_expected','quantity_picked']]
дает следующий вывод:
UPC date_expected quantity_picked
0 0000000002554 2019-05-21 4.0
1 0000000002554 2019-05-24 2.0
2 0000000002554 2019-06-02 2.0
3 0000000002554 2019-06-17 2.0
4 0000000003082 2019-05-15 2.0
5 0000000003082 2019-05-16 2.0
6 0000000003082 2019-05-17 8.0
... ... ...
31588 0360600051715 2019-06-17 1.0
31589 0501072452748 2019-06-15 1.0
31590 0880100551750 2019-06-07 2.0
Когда я пытаюсь следовать решению, данному в:
Панды, заполняющие недостающие даты и значения в группе
Я настраиваю свой код на
tipd = order_daily.groupby(['UPC', 'date_expected']).sum().reindex(idx, fill_value=0).reset_index()
# Rearranging of columns to put UPC column first
tipd = tipd[['UPC','date_expected','quantity_picked']]
# Viewing first 10 rows to check format of dataframe
print('Preview of Total per Item per Day')
print(tipd.iloc[0:10])
И получите следующую ошибку:
TypeError: Argument 'tuples' has incorrect type (expected numpy.ndarray, got DatetimeArray)
Мне нужно, чтобы каждая дата была указана для каждого продукта, даже если выбранное количество равно нулю. Я планирую создать два новых столбца с использованием .shift и .diff для расчетов, и эти столбцы будут неточными, если мои данные будут пропускать даты.
Любое руководство очень ценится.