Допустим, у меня есть следующий фрейм данных:
df = pd.DataFrame({"quantity": [101, 102, 103], "price":[12, 33, 44]})
price quantity
0 12 101
1 33 102
2 44 103
Я изо всех сил пытался найти, как применить к нему функцию скользящего комплекса.
Для простоты, давайте предположим, что эта функция f
это просто произведение quantity
и price
.В этом случае, как применить эту функцию к скользящему окну размером 1
с параметром масштабирования, скажем:
scaling = 10
, так что результирующий кадр данных будет:
price quantity value
0 12 101 NaN
1 33 102 12120.0
2 44 103 33660.0
с value[i] = price[i-1]*quantity[i-1]*scaling
Я пробовал:
def f(x,scaling):
return x['quantity']*x['price']*scaling
df.rolling(window=1).apply(lambda x: f(x,scaling))
и
def f(quantity,price,scaling):
return quantity*price*scaling
df.rolling(window=1).apply(lambda x: f(x['quantity'],x['price'],scaling))
Не могли бы вы помочь мне исправить это без выполнения простой:
df['value'] = df['quantity'].shift(1)*df['price'].shift(1)*scaling
?