Python 在数据帧上应用具有多个参数的滚动函数

Python 在数据帧上应用具有多个参数的滚动函数,python,pandas,dataframe,apply,rolling-computation,Python,Pandas,Dataframe,Apply,Rolling Computation,假设我有以下数据帧: df = pd.DataFrame({"quantity": [101, 102, 103], "price":[12, 33, 44]}) price quantity 0 12 101 1 33 102 2 44 103 我一直在努力寻找如何在其上应用滚动复函数 为简单起见,我们假设此函数f只是数量和价格的乘积。在这种情况下,如何在大小为1的滚动窗口上应用此函数,并使用缩放参数,例如: scaling = 10

假设我有以下数据帧:

df = pd.DataFrame({"quantity": [101, 102, 103], "price":[12, 33, 44]})

    price   quantity
0   12      101
1   33      102
2   44      103
我一直在努力寻找如何在其上应用滚动复函数

为简单起见,我们假设此函数
f
只是
数量
价格
的乘积。在这种情况下,如何在大小为
1
的滚动窗口上应用此函数,并使用缩放参数,例如:

scaling = 10
这样,生成的数据帧将是:

    price   quantity    value
0   12      101         NaN
1   33      102         12120.0
2   44      103         33660.0
值[i]=价格[i-1]*数量[i-1]*缩放

我试过:

def f(x,scaling):
    return x['quantity']*x['price']*scaling
df.rolling(window=1).apply(lambda x: f(x,scaling))

你能帮我解决这个问题而不做一个简单的:

df['value'] = df['quantity'].shift(1)*df['price'].shift(1)*scaling 

假设您想要的确实是
值[i]=价格[i-1]*数量[i-1]*缩放
,那么:

scaling = 10
df['value'] = df.shift(1).apply(lambda x: x['quantity'] * x['price'] * scaling, axis=1)
df


生成的数据帧正确吗?如果你想让值[i]在i-1上,那么值肯定是NaN,1212033660?哦,是的,对不起。我会更新这个问题。谢谢下面的答案是你需要的吗?我想是的!谢谢
scaling = 10
df['value'] = df.shift(1).apply(lambda x: x['quantity'] * x['price'] * scaling, axis=1)
    quantity    price   value
0   101         12      NaN
1   102         33      12120.0
2   103         44      33660.0