#python #pandas #dataframe
#python #панды #фрейм данных
Вопрос:
Люди.
Мне нужно суммировать значения фрейма данных в разных столбцах.
- ВЫХОД с вложенной суммой
- В соответствии с полученной суммой
- РИСУЙТЕ с учетом взятой суммы.
Итак, OUT — это общая сумма вложенных средств. Если у вас НИЧЬЯ, это означает, что значение было взято для инвестиций. В качестве примера, -100 (СТРОКА 1) 100 (СТРОКА 2 [DRAW]) означает, что вы приняли часть инвестиций. В этом случае значение, полученное в столбце IN, означает, что у нас есть 110-100 (оба в строке 2. Один в столбце IN, другой в DRAW) дохода, что дает нам общий доход в 10 единиц (10% от инвестиций = (110-100) / 100 = (IN-DRAW) / OUT).
У нас также может быть НИЧЬЯ без возврата, как в строке 12. В этом примере, начиная с этой строки, доход будет рассчитываться в 2 раза-200 (-400) 20 = -380.
После строки 5 у нас есть инвестиции в 2 раза больше -200; -400 в общей сумме и без ничьих и выходов, до строки 12. Я сомневаюсь в том, как наилучшим образом рассчитать% за каждый месяц на основе выходов, входов и выходов во всей таблице.
СТРОКА | Дата | OUT | В | РИСОВАТЬ |
---|---|---|---|---|
1 | 2020-01-20 | -100 | — | |
2 | 2020-02-10 | — | 110 | 100 |
3 | 2020-02-11 | -200 | — | |
4 | 2020-02-21 | — | 20 | |
5 | 2020-02-25 | -200 | — | |
6 | 2020-02-26 | -200 | — | |
7 | 2020-02-26 | — | 20 | |
8 | 2020-03-09 | — | 40 | |
9 | 2020-04-01 | — | 10 | |
10 | 2020-04-07 | — | 20 | |
11 | 2020-04-10 | — | 10 | |
12 | 2020-05-10 | — | — | 20 |
Ответ №1:
Я пришел с решением, все еще не зная, является ли оно лучшим, но работал нормально. Я сделал новый столбец объединенным и ОБЪЕДИНЕННЫМ (OUTDRAW). Этот столбец был создан с данными OUT, и они заполнили пробелы NaN значениями РИСОВАНИЯ (это сработало только потому, что значения не находятся в одной строке):
df['OUTDRAW'] = df['OUT']
df['OUTDRAW'].fillna(df['DRAW'], inplace=True)
После этого заполнил NaN значением 0 и создал для него cumsum.
df['OUTDRAW'].fillna(0, inplace=True)
df['OUTDRAW'].cumsum()
Это дало мне столбец
СТРОКА | Дата | OUT | РИСОВАТЬ | OUTDRAW |
---|---|---|---|---|
1 | 2020-01-20 | -100 | — | -100 |
2 | 2020-02-10 | — | 100 | 0 |
3 | 2020-02-11 | -200 | — | -200 |
4 | 2020-02-21 | — | 20 | -200 |
5 | 2020-02-25 | -200 | — | -400 |
6 | 2020-02-26 | -200 | — | -600 |
7 | 2020-02-26 | — | 20 | -600 |
8 | 2020-03-09 | — | 40 | -600 |
9 | 2020-04-01 | — | 10 | -600 |
10 | 2020-04-07 | — | 20 | -600 |
11 | 2020-04-10 | — | 10 | -600 |
12 | 2020-05-10 | — | 20 | -580 |
Итак, теперь у нас есть столбец во времени, который можно использовать для вычисления% во времени.
Примечание: Если вы хотите сделать это по месяцам, сначала создайте новый столбец с месяцами (будьте осторожны с годами), сгруппируйте по нему, и они выполнят cumsum, иначе ваши значения будут вычислены неправильно.