我正在尝试更改数据帧打印输出,以便它开始将第一个数据帧条目编号为40而不是0.
import pandas as pd
import numpy as np
import glob
import datetime as dt
import math
principle = 50000 # Amount initially invested
rate_of_return = .076 # Return on investment or the interest rate
years = 26 # Assuming starting at age 40 and end at age 65
roi_list = []
for i in range(years):
roi_list.append(principle)
principle = principle*(math.exp(rate_of_return))
df = pd.DataFrame(roi_list) # Creates a dataframe containing the roi_list values
print(df)
答案 0 :(得分:1)
pandas.DataFrame(data=None, index=None, columns=None, dtype=None, copy=False)使用index
参数来提供索引信息。
索引:索引或类似数组
用于结果框架的索引。如果没有索引信息部分输入数据且没有提供索引,则默认为np.arange(n)
所以这将完成这项工作:
df = pd.DataFrame(roi_list, index=np.arange(40, 40 + years))
答案 1 :(得分:1)
由于您使用的是pandas,因此您可能需要考虑矢量化解决方案。这就是大熊猫的设计目标。
years = np.arange(26)
r = .076 # 7.6% compounded annual growth rate
principle = 50000
s = pd.Series(principle * ((1+r)**years),
index=np.add(years, 40))
print(s.head())
40 50000.000
41 53800.000
42 57888.800
43 62288.349
44 67022.263
dtype: float64
操作实例:
years = np.arange(26)
创建一个NumPy数组,从0开始,到25结束。r
是我们的年化增长率。您在评论中说您已经假定指数增长率,但事实并非如此。您目前正在使用 e 的年化增长率提高到.076(math.exp(r)
),年化率为7.89%。这是一个不变的增长率,而不是指数增长率。 li>
principle * ((1+r)**years)
。只需花费(1+r)**years
即可显示每年复合增长1美元,增幅为7.6%。乘以(整个数组)您的开始原则可以获得该主体的假设增长。答案 2 :(得分:0)
df = pd.DataFrame(roi_list,index=range(40,40+years),columns=['Principle'])
答案 3 :(得分:0)
import pandas as pd
import numpy as np
import glob
import datetime as dt
import math
principle = 50000 # Amount initially invested
rate_of_return = .076 # Return on investment or the interest rate
years = 26 # Assuming starting at age 40 and end at age 65
roi_list = []
for i in range(years):
roi_list.append(principle)
principle = principle*(math.exp(rate_of_return))
yearlist = []
for i in range(years):
yearlist.append(i + 40)
dates = pd.DataFrame(yearlist)
df = pd.DataFrame(roi_list, index = dates) # Creates a dataframe containing the roi_list values
print(df)
这是你想要的吗?