我循环遍历一系列数字,然后计算小于或等于每个范围成员的系列中的内容:
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 ) ) )
答案 0 :(得分:1)
在我看来,您的代码会生成一个数据帧df_result,其中包含一列&#39; FILLS&#39;然后被覆盖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提供一些样本数据并告诉我们你的目标是什么,那么帮助你就会容易得多。