Как добавить результат предыдущего ряда в содержимое текущего ряда? - PullRequest
0 голосов
/ 10 декабря 2018
import pandas as pd
import numpy as np

df = pd.DataFrame({"a": [7, 2, 3], "b": [4, 5, 6], "c": [100, np.nan, np.NaN]})

df
Out[11]: 
   a  b      c
0  7  4  100.0
1  2  5    NaN
2  3  6    NaN

Для описанного выше Python DataFrame Python я хотел бы сделать для нуля номер строки: вычислить разницу между столбцами a и b.Результат этого должен быть добавлен к содержимому столбца c и сохранен в (новом) столбце d.

Для строки номер один, на первом шаге содержимое строки ноль / столбецd должен храниться в столбце c.После этого должен применяться тот же алгоритм, что и раньше, для нулевой строки.

После выполнения этого результирующий DataFrame будет выглядеть следующим образом:

   a  b      c     d
0  7  4  100.0   103.
1  2  5  103.0   100.
2  3  6  100.0    97.

В действительности в кадре данных гораздо больше строк, чем в этоммаленький пример.Поэтому высокая скорость вычислений очень важна.

Как будет выглядеть решение для вычисления этого нового фрейма данных?

1 Ответ

0 голосов
/ 10 декабря 2018

Вы можете получить кумулятивную сумму разности между a и b, добавить ее к исходному значению c вашего столбца и заполнить оставшуюся часть c только что вычисленным d смещенным внизпо 1:

df['d'] = df.a.sub(df.b).cumsum().add(df.c.iloc[0])

df.loc[1:,'c'] = df.d.shift()

>>> df
   a  b      c      d
0  7  4  100.0  103.0
1  2  5  103.0  100.0
2  3  6  100.0   97.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...