Добавить в корзинуПозвонить
Найти в Дзене
Learning to Python

Акции и Профит LeetCode 1393

Всем привет, сегодня решаю задачи по Pandas, чтобы не забыть чему уже успел научиться. Одна была на освоение метода .melt(). Но она совсем простая. Вторая задача поинтересней, про учет прибылей и убытков от торговли ценными бумагами (вот это я понимаю…) Таблица, с которой нужно было работать, изначально дана в таком виде: Сначала я посчитал сумму одинаковых акций с одной и той же операцией (Купить или Продать) с помощью метода .groupby() Но дальше встал вопрос, как посчитать прибыль? Для этого от сумму в операции «Продать» нужно отнять сумму операции «Купить». Это можно сделать за счет суммирования столбцов тем же методом .groupby(), но для начала нужно поменять значение «Цены» в рядах «Купить» на отрицательные. Я поискал такие операции в интернетах, но как ни старался, ничего похожего не нашел. В итоге пришлось подсматривать в готовые решения. Замена знака делается с помощью вспомогательной функции, которую затем можно применить методом .apply(). Я не стал прописывать вспомогательную

Всем привет, сегодня решаю задачи по Pandas, чтобы не забыть чему уже успел научиться.

Одна была на освоение метода .melt(). Но она совсем простая.

LeetCode 2890
LeetCode 2890

Вторая задача поинтересней, про учет прибылей и убытков от торговли ценными бумагами (вот это я понимаю…)

LeetCode 1393
LeetCode 1393

Таблица, с которой нужно было работать, изначально дана в таком виде:

Таблица цен и операций с акциями
Таблица цен и операций с акциями

Сначала я посчитал сумму одинаковых акций с одной и той же операцией (Купить или Продать) с помощью метода .groupby()

Применение метода .groupby()
Применение метода .groupby()
Сгруппированная таблица
Сгруппированная таблица

Но дальше встал вопрос, как посчитать прибыль? Для этого от сумму в операции «Продать» нужно отнять сумму операции «Купить». Это можно сделать за счет суммирования столбцов тем же методом .groupby(), но для начала нужно поменять значение «Цены» в рядах «Купить» на отрицательные.

Я поискал такие операции в интернетах, но как ни старался, ничего похожего не нашел. В итоге пришлось подсматривать в готовые решения.

Замена знака делается с помощью вспомогательной функции, которую затем можно применить методом .apply().

Я не стал прописывать вспомогательную функцию отдельно, а запихнул условия в сам метод. Получилось вот так:

Метод .apply() для замены знака для разных операций
Метод .apply() для замены знака для разных операций

Ну а после того, как я научился менять знак цены, то можно поменять порядок операций и получится почти готовый ответ.

Для этого сначала меняем знак в ценах, а затем суммируем значения методом .groupby()

Остальное косметика, чтобы привести таблицу в нужный формат (переименовываем столбец, выбрасываем ненужные колонки)

Решение задачи LeetCode 1393
Решение задачи LeetCode 1393
-8

До скорого