我将要编写一个回溯测试工具,因此对于每一行,我希望在给定的行之前能够访问所有的数据帧。在下面的示例中,我使用循环从固定索引执行此操作。我想知道有没有更好的解决办法。你知道吗
import numpy as np
import pandas as pd
N
df = pd.DataFrame({"a":np.arange(N)})
for i in range(3,N):
print(df["a"][:i].values)
更新(玩具示例) 我需要对所有以前的值应用一个自定义函数。这里作为一个玩具示例,我将使用所有先前值的平方和。你知道吗
def toyFun(v):
return np.sum(v**2)
res = np.empty(N)
res[:] = np.nan
for i in range(3, N):
res[i] = toyFun(df["a"][:i].values)
df["res"] = res
如果要为特定列的行编制索引,比如“a”,可以使用
.iloc
索引器(i表示索引,loc表示位置)对列进行索引。你知道吗所以,你可以做:
最好的方法是使用一个临时列来直接计算结果,这样就不会重新计算所有的结果。你知道吗
df[“a”].apply(λx:x**2).cumsum()
然后根据需要重新编制索引: res[3:]=df[“a”].apply(lambda x:x**2).cumsum()[2:N-1].值
或者直接到数据帧。你知道吗
相关问题 更多 >
编程相关推荐