Необходимо выполнить расчет в кадре данных с предыдущим значением строки

avatar
Mojiz Mehdi
9 августа 2021 в 06:07
119
2
-2

У меня есть этот фрейм данных с двумя столбцами. Условие, которое мне нужно сформировать, это когда столбец «Созданный баланс» пуст, мне нужно взять последнее заполненное значение «Созданный баланс» и добавить его со следующей строкой значения «Сумма».

Исходный кадр данных:

enter image description here

После расчета желаемый результат должен быть:

enter image description here

Источник
Naga kiran
9 августа 2021 в 06:11
1

df['Amount'].cumsum(), вы можете использовать это, кумулятивную сумму другого столбца, пожалуйста, изучите документацию

Ответы (2)

avatar
Naga kiran
9 августа 2021 в 06:18
0

для этого можно попробовать использовать совокупную сумму панд,

df['Amount'].cumsum()

# Edit-1
condition = df['Balance Created'].isnull()
df.loc[condition, 'Balance Created'] = df['Amount'].loc[condition]

вы также можете подать заявку на основе групп, таких как депозит и снятие средств

df.groupby('transaction')['Amount'].cumsum()
Mojiz Mehdi
9 августа 2021 в 06:42
1

эта общая сумма применяется ко всему столбцу «Сумма», что мне нужно сделать, это начать только тогда, когда созданное значение баланса равно нулю. Как я могу достичь этого. Заранее спасибо!

Naga kiran
9 августа 2021 в 06:43
0

не могли бы вы добавить небольшой фрагмент с 4-5 строками, нужна ясность :-| @MojizMehdi

Mojiz Mehdi
9 августа 2021 в 06:46
1

Отредактировал мой вопрос, добавив «нан», надеюсь, это поможет. Мне просто нужно игнорировать уже заполненные данные в созданном столбце баланса, а затем применить что-то вроде cumsum в пустых ячейках.

Mojiz Mehdi
9 августа 2021 в 06:49
0

Нужно запустить функцию cumsum с индекса 4 в кадре данных

Naga kiran
9 августа 2021 в 06:49
0

на самом деле, несоответствие данных не происходит с общей суммой, возьмем ли мы это прямое назначение столбца df['Balance Created'] = df['Amount'].cumsum() ,

Mojiz Mehdi
9 августа 2021 в 07:44
1

Я знаю, что данные не совпадают с этим примером, но уже заполненные данные поступают из какого-то другого источника, и я должен хранить в нем комнату ошибок. Поскольку у меня есть другие расчеты и проверки, я не могу применить cumsum ко всему столбцу. Надеюсь, теперь вы поняли требование.

Naga kiran
9 августа 2021 в 07:50
0

понял , #Редактировать-1 код, не будет мешать заполненные данные, можно один раз проверить

avatar
Henrik Klev
9 августа 2021 в 06:27
0

Я предполагаю, что ваш вопрос в основном "Как мне решить это с помощью панд", и это хороший вопрос, на который другие дали вам ответы, специфичные для панд.

Но в случае, если этот вопрос больше относится к строкам "Как мне решить это с помощью алгоритма", что является общей проблемой для людей, только начинающих писать код, то этот небольшой абзац может подтолкнуть вас к правильному решению. направление.

for index in frame do 
  if frame.balance[i] is empty do 
    if i equals 0 do // Edge-case where first balance is missing
      frame.balance[i] = frame.amount[i]
    else do
      frame.balance[i] = frame.amount[i] + frame.balance[i-1]
    end
  end
end