Значение, которое необходимо расширить во времени

#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, иначе ваши значения будут вычислены неправильно.