我正在进行数据驱动的债券筛选,并输入1526列和2412行的大型数据集。对于10列,此刻需要2分钟的处理时间,这太多了。以下功能需要90%的时间:
该函数的输入是df:一个熊猫系列,其中索引是一个时间序列,第一列具有浮点数,如下所示:
def future_returns(df):
grid_columns = np.arange(len(df))
grid = pd.DataFrame(index=df.index, columns=grid_columns)
# fill grid with copies of df, shifted 1 element forward for each column
for no, idx in enumerate(grid.columns):
grid.loc[:, idx] = df.shift(-no)
# calculate future returns from every point in the index
future_returns = grid.divide(grid.iloc[:, 0], axis=0) - 1
return future_returns