«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как вычислить столбец на основе значений предыдущих строк в Pandas с помощью функции apply()?

Как вычислить столбец на основе значений предыдущих строк в Pandas с помощью функции apply()?

Опубликовано 1 ноября 2024 г.
Просматривать:783

How to Calculate a Column Based on Previous Row Values in Pandas Using the `apply()` Function?

Применение вычислений со значениями предыдущих строк в Pandas

В Pandas проблема включения значений предыдущих строк в вычисления во время манипулирования данными не является проблемой необычный. Один из таких сценариев предполагает необходимость использования значения предыдущей строки при вычислении нового столбца с помощью функции apply().

Рассмотрим сценарий, в котором у нас есть DataFrame со следующей структурой:

Index_Date    A   B     C    D
================================
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

Наша цель — заполнить столбец «C» расчетными значениями. Для первой строки «C» является производным от «D». Для последующих строк значение «C» рассчитывается путем умножения значения «C» предыдущей строки на значение «A» для текущей строки и добавления значения «B».

Подход

Для достижения этого мы используем комбинацию инициализации и итерации внутри функции apply().

  1. Инициализируем значение 'C' для первой строки, используя значение из 'D' .
df.loc[0, 'C'] = df.loc[0, 'D']
  1. Перебрать оставшиеся строки и вычислить значения 'C':
for i in range(1, len(df)):
    df.loc[i, 'C'] = df.loc[i - 1, 'C'] * df.loc[i, 'A']   df.loc[i, 'B']

Результат

Этот подход эффективно заполнит столбец «C» желаемыми расчетными значениями:

Index_Date    A   B    C    D
================================
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
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3