2013-09-29 5 views
4

У меня есть панд dataframe, который выглядит следующим образом:Python панд dataframe добавить предыдущий ряд значений

     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 

Я пытался перебирать индекс dataframe с

for date in df.index: 

и увеличиваем даты с

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

но есть пробелы в индексе dataframe которые стоят на выходные.

Можно ли перебирать индекс из второй строки в конец, ссылаться на предыдущую строку и добавлять значения?

ответ

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 s просто сделать:

>>> 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

сперма сумма вещей именно то, что я искал. Большое спасибо за Вашу помощь! –

Смежные вопросы