获取每个

2024-04-20 08:03:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我将要编写一个回溯测试工具,因此对于每一行,我希望在给定的行之前能够访问所有的数据帧。在下面的示例中,我使用循环从固定索引执行此操作。我想知道有没有更好的解决办法。你知道吗

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

Tags: 数据inimport示例dfforasnp
2条回答

如果要为特定列的行编制索引,比如“a”,可以使用.iloc索引器(i表示索引,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])

最好的方法是使用一个临时列来直接计算结果,这样就不会重新计算所有的结果。你知道吗

df[“a”].apply(λx:x**2).cumsum()

然后根据需要重新编制索引: res[3:]=df[“a”].apply(lambda x:x**2).cumsum()[2:N-1].值

或者直接到数据帧。你知道吗

相关问题 更多 >