在 DataFrame 上应用具有多个参数的滚动函数
Apply a rolling function with multiple arguments on a DataFrame
假设我有以下数据框:
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
的滚动 window,并使用缩放参数,例如:
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
?
假设你想要的确实是 value[i] = price[i-1] * quantity[i-1] * scaling
,那么:
scaling = 10
df['value'] = df.shift(1).apply(lambda x: x['quantity'] * x['price'] * scaling, axis=1)
df
quantity price value
0 101 12 NaN
1 102 33 12120.0
2 103 44 33660.0
假设我有以下数据框:
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
的滚动 window,并使用缩放参数,例如:
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
?
假设你想要的确实是 value[i] = price[i-1] * quantity[i-1] * scaling
,那么:
scaling = 10
df['value'] = df.shift(1).apply(lambda x: x['quantity'] * x['price'] * scaling, axis=1)
df
quantity price value
0 101 12 NaN
1 102 33 12120.0
2 103 44 33660.0