2013-09-29 48 views
4

我有一个熊猫数据帧,看起来像这样:Python的熊猫数据帧添加上一行值

     AAPL IBM GOOG XOM 
2011-01-10 16:00:00 1500  0  0 0 
2011-01-11 16:00:00  0  0  0 0 
2011-01-12 16:00:00  0  0  0 0 
2011-01-13 16:00:00 -1500 4000  0 0 
2011-01-14 16:00:00  0  0  0 0 
2011-01-18 16:00:00  0  0  0 0 

我的目标是通过将以前的行值来填补行。其结果是这样的:

     AAPL IBM GOOG XOM 
2011-01-10 16:00:00 1500  0  0 0 
2011-01-11 16:00:00 1500  0  0 0 
2011-01-12 16:00:00 1500  0  0 0 
2011-01-13 16:00:00  0 4000  0 0 
2011-01-14 16:00:00  0 4000  0 0 
2011-01-18 16:00:00  0 4000  0 0 

我试图通过数据帧指数与

for date in df.index: 

迭代与

dt_nextDate = date + dt.timedelta(days=1) 

递增日期,但也有在数据帧指数差距那代表周末。

我可以遍历从第二行到末尾的索引,引用回前一行并添加值?

回答

6

您的示例结果不是您示例算法的输出,因此我不确定您确切要求什么?

期望的结果,你表现出是一个累积的总和,你可以得到使用:

>>> df.cumsum() 
        AAPL IBM GOOG XOM 
index          
2011-01-1016:00:00 1500  0  0 0 
2011-01-1116:00:00 1500  0  0 0 
2011-01-1216:00:00 1500  0  0 0 
2011-01-1316:00:00  0 4000  0 0 
2011-01-1416:00:00  0 4000  0 0 
2011-01-1816:00:00  0 4000  0 0 

但是你解释你想要的东西,你表现的算法,更可能是一个滚动的总和与窗口大小等于2:

>>> result = pd.rolling_sum(df, 2) 
>>> result 
        AAPL IBM GOOG XOM 
index          
2011-01-1016:00:00 NaN NaN NaN NaN 
2011-01-1116:00:00 1500  0  0 0 
2011-01-1216:00:00  0  0  0 0 
2011-01-1316:00:00 -1500 4000  0 0 
2011-01-1416:00:00 -1500 4000  0 0 
2011-01-1816:00:00  0  0  0 0 

要解决的NaN的只有我做:

>>> result.iloc[0,:] = df.iloc[0,:] 
>>> result 
        AAPL IBM GOOG XOM 
index          
2011-01-1016:00:00 1500  0  0 0 
2011-01-1116:00:00 1500  0  0 0 
2011-01-1216:00:00  0  0  0 0 
2011-01-1316:00:00 -1500 4000  0 0 
2011-01-1416:00:00 -1500 4000  0 0 
2011-01-1816:00:00  0  0  0 0 
+1

暨总之,正是我所期待的。非常感谢您的帮助! –