我试图得到一个累计和,根据另一个变量的产品和总和的滞后值变化(听起来有点像数学乱码,我知道..请耐心等待)熊猫cumsum与滞后值的条件产品?
这里是例如设置:
import pandas as pd
df = pd.DataFrame([1,1,1.004878,1,1.043394],columns=['xx'])
df['n'] = 1000000.0
是组装到:
xx n
0 1.000000 1000000
1 1.000000 1000000
2 1.004878 1000000
3 1.000000 1000000
4 1.043394 1000000
现在,我们需要的n
,反复的滞后值乘以xx
,然后采取累积这个值的总和:
cs = pd.Series([0.0] * len(df))
cs[0] = df.ix[0]['n']
for i,e in enumerate(df.iterrows()):
if i == 0: continue
cs[i] = df.ix[i]['xx'] * cs[(i - 1)]
这将产生以下:
0 1000000.000000
1 1000000.000000
2 1004878.000000
3 1004878.000000
4 1048483.675932
dtype: float64
问:有没有办法在大熊猫做到这一点/不需要遍历每个行numpy的?如果不是,当你被迫迭代时,是否有任何技巧来优化上述代码?在这种情况下,可以创造性地制作索引帮助吗?在多个数据集中,性能是10000行以上的问题。
使用[SHIFT](http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.shift.html) – U2EF1 2014-09-06 18:59:13