[英]Python pandas dataframe add previous row values
我有一個像這樣的pandas數據框:
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)
但數據框索引中存在間隙,表示周末。
我可以從第二行到結尾遍歷索引,返回上一行並添加值嗎?
您的示例結果不是示例算法的輸出,因此我不確定您要求的是什么?
您顯示的所需結果是累積總和,您可以使用:
>>> 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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.