【发布时间】:2019-01-29 15:42:10
【问题描述】:
我是 Python 的新手。我编写了一个脚本,与我的其余代码相比,我对通过特定循环所花费的时间感到惊讶。
谁能告诉我我写的代码效率低下的地方以及如何提高速度?
这是有问题的循环:(BT_Histos 和 Histos_Last_Rebal 是数据帧,其日期在索引和浮点列中。Portfolio 和 Portfolio_Last_Rebal 是与我通过循环填充的前两个索引相同的数据帧。权重只是一个列表)
Udl_Perf=BT_Histos/Histos_Last_Rebal-1
for i in range(1,len(BT_Histos.index)):
"""tricky because isin doesn't work with timestamp"""
test_date=pd.Series(Portfolio.index[i-1])
if test_date.isin(Rebalancing_Dates)[0]:
Portfolio_Last_Rebal.loc[Portfolio_Last_Rebal.index[i],'PortSeries']=Portfolio.loc[Portfolio.index[i-1],'PortSeries']
else:
Portfolio_Last_Rebal.loc[Portfolio_Last_Rebal.index[i],'PortSeries']=Portfolio_Last_Rebal.loc[Portfolio_Last_Rebal.index[i-1],'PortSeries']
Portfolio.loc[Portfolio.index[i],'PortSeries']=Portfolio_Last_Rebal.loc[Portfolio_Last_Rebal.index[i],'PortSeries']*(1+sum(Udl_Perf.iloc[i]*weights))
谢谢!
【问题讨论】:
标签: python pandas performance loops