Народ,
Я искал StackOverflow для моего варианта использования, но не смог найти ничего полезного.Если вы считаете, что эта проблема уже решена, укажите на соответствующий вопрос.
Вариант использования.
У меня есть следующий фрейм данных.
Maturity,Periods
0.5,2
0.5,2
1.0,3
1.0,3
1.0,3
Как видите, столбец maturity
повторяется на основе числа в столбце periods
.Теперь я хочу создать новый столбец, который будет иметь все 0, кроме 1 значения для каждого сгруппированного срока погашения.Таким образом, ожидаемый фрейм данных выглядит примерно так:
Maturity,Periods,CP
0.5,2,0
0.5,2,1
1.0,3,0
1.0,3,0
1.0,3,1
Как видно из ожидаемого фрейма данных, число 0s
в столбце CP
на 1 меньше значения в столбце Periods
иоставшееся значение равно 1.
Я попробовал описанную ниже групповую операцию панд, но она не удалась.
new_df['CP'] = new_df.groupby(['Maturity'])['Periods'].apply(lambda x: np.zeros((x-1, 1)) + np.array([1.0])).reset_index()
Может кто-нибудь указать, где я ошибаюсь?
ОБНОВЛЕННОЕ РЕДАКТИРОВАНИЕ:
В качестве продолжения вышеуказанного вопроса, как будет решаться описанный ниже подход с использованием операций Pandas?
Используя этот приведенный выше кадр данных, я хочу создатьновый столбец, но ожидаемый результат выглядит примерно так:
Maturity,Periods,CP,TimeCF
0.5,2,0,0.5
0.5,2,1,0.5
1.0,3,0,0.5
1.0,3,0,1.0
1.0,3,1,1.0
1.5,4,0,0.5
1.5,4,0,1.0
1.5,4,0,1.5
1.5,4,1,1.5
Новый столбец TimeCF
будет содержать значения времени потоков денежных средств (с учетом полугодовых потоков денежных средств по облигации)