Я пишу эмуляцию банковского депозитного счета в пандах.Я застрял с Сложные проценты (Это результат реинвестирования процентов, так что проценты в следующем периоде начисляются на основную сумму плюс ранее накопленные проценты.)
Пока что яиметь следующий код:
import pandas as pd
from pandas.tseries.offsets import MonthEnd
from datetime import datetime
# Create a date range
start = '21/11/2017'
now = datetime.now()
date_rng = pd.date_range(start=start, end=now, freq='d')
# Create an example data frame with the timestamp data
df = pd.DataFrame(date_rng, columns=['Date'])
# Add column (EndOfMonth) - shows the last day of the current month
df['LastDayOfMonth'] = pd.to_datetime(df['Date']) + MonthEnd(0)
# Add columns for interest, Sasha, Artem, Total, Description
df['Debit'] = 0
df['Credit'] = 0
df['Total'] = 0
df['Description'] = ''
# Iterate through the DataFrame to set "IsItLastDay" value
for i in df:
df['IsItLastDay'] = (df['LastDayOfMonth'] == df['Date'])
# Add the transaction of the first deposit
df.loc[df.Date == '2017-11-21', ['Debit', 'Description']] = 10000, "First deposit"
# Calculate the principal sum (It the summ of all deposits minus all withdrows plus all compaund interests)
df['Total'] = (df.Debit - df.Credit).cumsum()
# Calculate interest per day and Cumulative interest
# 11% is the interest rate per year
df['InterestPerDay'] = (df['Total'] * 0.11) / 365
df['InterestCumulative'] = ((df['Total'] * 0.11) / 365).cumsum()
# Change the order of columns
df = df[['Date', 'LastDayOfMonth', 'IsItLastDay', 'InterestPerDay', 'InterestCumulative', 'Debit', 'Credit', 'Total', 'Description']]
df.to_excel("results.xlsx")
Выходной файл выглядит нормально, но мне нужно следующее:
- Столбец "InterestCumulative" добавляет в столбец "Всего" в последнийдень каждого месяца (сложение процентов)
- В начале каждого месяца столбец «Начисление процентов» должен быть очищен (поскольку проценты были добавлены к основной сумме).
И я понятия не имею, как это сделать.
Есть ли у вас какие-либо мысли по этому поводу?Спасибо заранее!