Есть ли способ в 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 
  • Сбросить столбцы Уровни MultiIndex
  • Каковы эквиваленты Pandon pandas для R-функций, таких как str (), summary () и head ()?
  • листы книги Excel из URL-адреса в `pandas.DataFrame`
  • Часы, дата, подсчет количества дней
  • Корреляция столбцов в DataFrame
  • pandas Диаграмма данных DataFrame
  • Pandas Modify DataFrames в Loop Part 2
  • Заполните мультииндекс Pandas DataFrame с интерполяцией
  • Python Pandas Drop Duplicates сохраняет второе место
  • Как заполнить столбец одним значением в Pandas?
  • ежедневные данные, resample каждые 3 дня, рассчитывать за последние 5 дней эффективно
  •  
    Interesting Posts for Van-Lav

    Penton Flask Intentional Empty Response

    Веб-сервер Python tornado: как использовать многопроцессорную обработку для ускорения веб-приложения

    Как вы можете извлечь идентификатор оборудования с помощью Python?

    Как сделать python argparse взаимоисключающими групповыми аргументами без префикса?

    Подключение к Microsoft SQL Server через pyODBC на Ubuntu

    Anaconda Spyder получил сообщение об ошибке в консоли Python

    Установка delete-orphan в отношении SQLAlchemy вызывает AssertionError: этот атрибутImpl не настроен для отслеживания родителей

    Маркировка оси с помощью matplotlib слишком разрежена

    Как ускорить запросы API?

    Извлечение определенных строк из кадра данных

    Декларация XML standalone = "yes" lxml

    Как реализовать потоки для запуска двух команд оболочки bash в python?

    почему мой сайт django в хостинге (alwaysdata) не может показать мою страницу

    Сравнение дат для проверки старых файлов

    Дикт и список диктов: преобразование и когда использовать

    Python - лучший язык программирования в мире.