Скорость продаж определяется как sales / running_days - PullRequest
0 голосов
/ 15 октября 2018

У меня есть кадр данных о продажах транзакций:

print(df)

dt_op      quantity      cod_id
20/01/18      1            100
20/01/18      8            102

21/01/18      1            100 
21/01/18     10            102
...

И я хотел бы определить новую переменную " speed " как "cumulative_sales / days_elapsed _since_the_launch_of_ это _product, для каждого отдельного элемента в «cod_id».

Я пробовал с:

start = min(df["dt_op"])

df["running_days"] = (df["dt_op"] - start).astype('timedelta64[D]')
df["csum"] = df.quantity.cumsum()

df["speed"] = df["csum"] / df["running_days"]

Но он не вычисляет его для каждого отдельного элемента ; Я бы избегал циклов for для вычислительных проблем и медленного времени выполнения.

1 Ответ

0 голосов
/ 15 октября 2018

Попробуйте сохранить первую дату запуска для каждого 'cod_id' в новом столбце с помощью grouby:

df2 = df.groupby(['cod_id']).dt_op.min()

и объединить его с вашим фреймом данных

df = pd.merge(df, df2, on='cod_id', how='left')

, затем создайте новый столбец в качестве разницы данных между минимальной датой и первой.И вы можете рассчитать csum всегда, как указано выше, и разделить разницу между датами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...