Есть ли способ в Pandas использовать предыдущее значение строки в dataframe.apply, когда предыдущее значение также вычисляется в приложении?

У меня есть следующий фреймворк:

Index_Date ABCD =============================== 2015-01-31 10 10 Nan 10 2015-02-01 2 3 Nan 22 2015-02-02 10 60 Nan 280 2015-02-03 10 100 Nan 250 

Требуется:

  Index_Date ABCD =============================== 2015-01-31 10 10 10 10 2015-02-01 2 3 23 22 2015-02-02 10 60 290 280 2015-02-03 10 100 3000 250 

Column C выведен для 2015-01-31 , принимая value D

Затем мне нужно использовать value C для 2015-01-31 и умножить на value A на 2015-02-01 и добавить B

Я попытался apply и shift используя if else это даст ключевую ошибку.

3 Solutions collect form web for “Есть ли способ в Pandas использовать предыдущее значение строки в dataframe.apply, когда предыдущее значение также вычисляется в приложении?”

Сначала создайте производное значение:

 df.loc[0, 'C'] = df.loc[0, 'D'] 

Затем перебираем оставшиеся строки и заполняем вычисленные значения:

 for i in range(1, len(df)): df.loc[i, 'C'] = df.loc[i-1, 'C'] * df.loc[i, 'A'] + df.loc[i, 'B'] Index_Date ABCD 0 2015-01-31 10 10 10 10 1 2015-02-01 2 3 23 22 2 2015-02-02 10 60 290 280 

Применение рекурсивной функции в массивах numpy будет быстрее, чем текущий ответ.

 df = pd.DataFrame(np.repeat(np.arange(2, 6),3).reshape(4,3), columns=['A', 'B', 'D']) new = [df.D.values[0]] for i in range(1, len(df.index)): new.append(new[i-1]*df.A.values[i]+df.B.values[i]) df['C'] = new 

Вывод

  ABDC 0 1 1 1 1 1 2 2 2 4 2 3 3 3 15 3 4 4 4 64 4 5 5 5 325 

Учитывая столбец чисел:

 lst = [] cols = ['A'] for a in range(100, 105): lst.append([a]) df = pd.DataFrame(lst, columns=cols, index=range(5)) df A 0 100 1 101 2 102 3 103 4 104 

Вы можете ссылаться на предыдущую строку со сдвигом:

 df['Change'] = df.A - df.A.shift(1) df A Change 0 100 NaN 1 101 1.0 2 102 1.0 3 103 1.0 4 104 1.0 
  • Объедините два блока данных Pandas с тем же индексом
  • python pandas rank by column
  • Индекс сброса Pandas в серии для удаления мультииндекса
  • как обозначить ось всеми именами строк из dataframe
  • Удалите значения низкой частоты из pandas.dataframe
  • Как удалить строки с нулевыми значениями из k-го столбца вперед в python
  • Синхронизация кода между сценарием ноутбука jupyter / iPython и методами класса
  • Обновление фрейма данных в пандах при повторении строки за строкой
  • Python - лучший язык программирования в мире.