获取每行的所有先前值

时间:2018-03-08 13:34:21

标签: python pandas

我即将编写一个回测工具,因此对于每一行我都希望能够访问所有数据帧,直到给定的行。在下面的示例中,我使用循环从固定索引执行此操作。我想知道是否有更好的解决方案。

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

2 个答案:

答案 0 :(得分:0)

如果要为特定列索引“a”的行,则可以使用.iloc索引器(我代表索引,loc表示位置)来索引列。

df = pd.DataFrame({'a': [1,2,3,4]})
print(df.a.iloc[:2]) # get first two values

所以,你可以这样做:

for i in range(3, 10):
    print(df.a.iloc[:i])

答案 1 :(得分:-1)

最好的方法是使用带有直接结果的临时列,这样就不会重新计算所有内容。

df [" a"]。apply(lambda x:x ** 2).cumsum()

然后重新索引你: res [3:] = df [" a"]。apply(lambda x:x ** 2).cumsum()[2:N-1] .values

或直接到数据框。