Erro de saída estranho, seguindo o exemplo da operação do vetor matirx em python

Eu quero fazer isso em python, aqui está um pequeno exemplo:

number_of_payments = [
    [0, 1, 0, 1, 1, 1, 0, 5, 1, 0, 2, 1],
    [0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 1, 0],
    [1, 3, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0]
]
NDD_month = [8, 7, 11]
dates = []
for i in range(len(number_of_payments)):
    dates.append([NDD_month[i]])
    for j in range(1, len(number_of_payments[i])):
        dates[i].append((dates[i][j-1] + 12 - number_of_payments[i][j-1]) % 12)
print(dates)

Isto me dá

[[8, 8, 7, 7, 6, 5, 4, 4, 11, 10, 10, 8], [7, 7, 7, 7, 7, 7, 7, 7, 5, 5, 5, 4], [11, 10, 7, 6, 6, 6, 5, 4, 3, 2, 2, 1]]

gora, eu tento fazer a mesma coisa, mas com todo o conjunto de dados, mas é isso que recebo (colarei todo o meu código abaixo

# Import modules
import numpy as np
import pandas as pd
import datetime

# Import data file
df = pd.read_csv("Paystring Data.csv")
df.head()

# Get column data into a list
x = list(df)

# Append column data into cpi, NDD, and as of dates
NDD = df['NDD 8/31']
cpi = df['Contractual PI']
as_of_date = pd.Series(pd.to_datetime(df.columns.str[:8], errors='coerce'))
as_of_date = as_of_date[1:13]
NDD_month = pd.to_datetime(NDD, errors = 'coerce').dt.month.tolist()
# print(as_of_date.dt.month)

# Get cash flows
cf = df.iloc[:,1:13].replace('[^0-9.]', '', regex=True).astype(float)
cf = cf.values

# Calculate number of payments
number_of_payments = []
for i in range(len(cpi)):
    number_of_payments.append((cf[:i + 1] / cpi[i]).astype(int))
np.vstack(number_of_payments).tolist()

# Calculate the new NDD dates
dates = []
for i in range(len(number_of_payments)):
    dates.append([NDD_month[i]])
    for j in range(1, len(number_of_payments[i])):
        dates[i].append((dates[i][j-1] + 12 - number_of_payments[i][j-1]) % 12)
print(dates[0])

Isso me dá[8]

Quando deveria ser[8, 8, 7, 7, 6, 5, 4, 4, 11, 10, 10, 8].

Alguém sabe como consertar isso

questionAnswers(1)

yourAnswerToTheQuestion