我想以“滚动”方式获取数据帧子集。我尝试了几件事但没有成功,这是我想做的一个例子。让我们考虑数据框。
df
var1 var2
0 43 74
1 44 74
2 45 66
3 46 268
4 47 66
Run Code Online (Sandbox Code Playgroud)
我想使用以下函数创建一个新列,该列执行条件总和:
def func(x):
tmp = (x["var1"] * (x["var2"] == 74)).sum()
return tmp
Run Code Online (Sandbox Code Playgroud)
并像这样称呼它
df["newvar"] = df.rolling(2, min_periods=1).apply(func)
Run Code Online (Sandbox Code Playgroud)
这意味着该函数将基于数据框应用,而不是针对每一行或每一列
它会回来
var1 var2 newvar
0 43 74 43 # 43
1 44 74 87 # 43 * 1 + 44 * 1
2 45 66 44 # 44 * 1 + 45 * 0
3 46 268 0 # 45 * 0 + …Run Code Online (Sandbox Code Playgroud)