найти среднее значение в оставшиеся дни, используя питонов - PullRequest
0 голосов
/ 21 ноября 2018

df - это CSV-файл, который содержит ship_date, order_date и cumulative_ordered.cumulative_ordered - сумма заказов, добавляемых за каждый день до даты ship_date.До каждой даты ship_date существует 30 дней, и эти дни учитываются только для одной даты ship_date.после ship_date 2018-07-01, затем следующая ship_date будет 2018-08-01 с той же процедурой.

Моя проблема в том, что я не могу получить оставшиеся дни (см. последний вывод кода ниже), когда я вычисляюсреднее процентное значение cumulative_ordered для каждого из этих 30 дней назад.

У меня есть следующий код, который дает мне days_remaining из файла csv с несколькими различными ship_date и order_date, которые ведут обратный отсчет до каждой отдельной ship_date.

df['days_remaining'] = pd.to_datetime(df['ship_date']).sub\
(pd.to_datetime(df['order_date'])).dt.days
df['difference'] = df['ship_date'] - df['order_date']

df.head()

вывод:

ship_date    Order_date   cumulative_ordered   days_remaining    difference

2018-07-01   2018-06-01     7                  30               30 days
2018-07-01   2018-06-02     10                 29               29 days
2018-07-01   2018-06-03     15                 28               28 days
2018-07-01   2018-06-04     30                 28               27 days
2018-07-01   2018-06-05     41                 28               26 days

Затем я пытаюсь найти общее количество заказанных за каждый день до ship_date

m = df.groupby("difference").mean()
m.head()

, что дает мне такой вывод:

             cumulative ordered    days_remaining
difference                            
      0 days    352.458124             0.0
      1 days    291.234747             1.0
      2 days    244.122137             2.0
      3 days    201.178765             3.0
      4 days    190.153641             4.0

Я сталкиваюсь с проблемой, когда пытаюсь найти среднее кумулятивное количество заказов за каждый день в процентах, заполняемых из выходных данных cumulative_ordered за 0 дней выше, запустив этот код:

   v = m/m[m.index.days == 0].iloc[0]
   v.head()

          cumulative_ordered      days_remaining
difference                           
0 days        1.000000              NaN
1 days        0.891324              inf
2 days        0.812534              inf
3 days        0.752339              inf
4 days        0.673745              inf

days_remaining изменяется на NaN и inf .. Как я могу сохранить его, чтобы он по-прежнему давал мне целые числа?

1 Ответ

0 голосов
/ 22 ноября 2018

NaN и inf являются результатом деления на 0.0.

Кажется, что вы пытаетесь применить операцию только к столбцу cumulative_ordered, поэтому вам нужно просто запустить ее дляваш последний блок кода:

m['cumulative_ordered'] = m['cumulative_ordered'] / m['cumulative_ordered'][m['cumulative_ordered'].index.days == 0]
...