Я пытаюсь умножить значения двух столбцов для разных групп в одном столбце:
* MtM = объем сегодня * (цена сегодня - цена вчера) *
Я мог бы сделать это с помощью формулы, основанной на строках, но она очень медленная. Есть ли способ рассчитать это, используя векторизованные операции?
biz_data = {
'business_id': ['1', '2', '3', '1', '2', '3', '1', '3', '1', '3'],
'volume': [20, 25, 25, 20, 26, 24, 25, 21, 21, 26],
'price': [10, 11, 10, 12, 15, 16, 10, 12,14, 10]}
results = pd.DataFrame(biz_data, columns = ['business_id','volume','price'])
results
Я сейчас делаю расчеты:
def mtm (x):
x['mtm'] = x['volume'] * x['price'].diff(periods = -1)
return x
results.groupby(['business_id']).apply(mtm)
В моем наборе данных более 100 тысяч строк, поэтому работа идет очень медленно.
Есть ли способ векторизовать его?