我正在遍历一系列数字,然后计算小于或等于每个范围成员的序列中的内容:

min_odds_range = np.arange( 1.01, 2.0, 0.01 )
df_result = pd.DataFrame( columns=[ 'FILLS' ], index=min_odds_range )
for mo in min_odds_range:
    df_result[ 'FILLS' ] = my_stats[ 'PRICE' ]<=mo


循环代码是我程序中最慢的部分。

我如何加快速度?我尝试使用下面的代码广播,但它给了我一个NotImplemented异常:

runner_stats[ 'MIN_ODDS' ].lt( pd.DataFrame( np.arange( 1.0, 2.0, 0.1 ) ) )

最佳答案

在我看来,您的代码生成的数据帧df_result具有一列“ FILLS”,然后被覆盖10次。实际上,只有for循环的最后迭代才对数据集起作用。

此代码将执行相同的操作,而无需循环。我敢肯定,虽然您在逻辑上错过了一些东西。

min_odds_range = np.arange( 1.01, 2.0, 0.01 )
df_result = pd.DataFrame( columns=[ 'FILLS' ], index=min_odds_range )
df_result[ 'FILLS' ] = my_stats[ 'PRICE' ] <= 2.0


如果您可以为my_stats提供一些示例数据并告诉我们您的目标是什么,那么帮助您会容易得多。

关于python - 加快np.arange(1,100)下的值求和,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26113894/

10-12 16:42