我有一个使用 b(t-1) 变量的函数,例如:
def test_b(a,b_1):
return a + b_1
假设以下数据框:
df = pd.DataFrame({'a':[1,2,3],'b':np.nan})
我正在分配 b_1 初始值:
df['b'].ix[0]=0
然后(利用我的 Matlab 经验),我使用循环:
for i in range(1,len(df)):
df['b'].ix[i] = test_b(df['a'].ix[i],df['b'].ix[i-1])
输出:
a|b
0|1|0
1|2|2
2|3|5
这是一种更优雅的方式吗?
最佳答案
你永远不想做这样的作业,因为这是 chained indexing
这是一个循环关系,因此 ATM 要想以超高性能的方式做到这一点并不容易,尽管请参阅 here 。
关于Python Pandas,使用 Dataframe 中的先前值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23996260/