2014-09-30 86 views
1

我循環通過數字的範圍,然後在一系列小於或等於每個範圍構件計數東西:加快值的下np.arange求和(1100)

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

聽起來你可以使用'numpy.searchsorted',但是從你的代碼中不清楚你到底想要做什麼1)循環不起作用2)在第二個代碼中變量名稱是不同的。如果您可以提供非常小的示例輸入和輸出,這也會非常有幫助。 – 2014-09-30 09:02:31

回答

1

在我看來,你的代碼生成與一列「充滿」然後把它改寫10次數據幀df_result。只有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樣本數據,告訴我們你的目標是什麼,它會更容易幫助你。