我對熊貓來說是比較新鮮的東西,我有大約500,000行的熊貓數據框填充了數字。我使用Python 2.x,目前正在定義和調用下面顯示的方法。如果序列'A'中的兩個相鄰值相同,它將預測值設置爲與序列'B'中的對應值相等。但是,它運行速度非常慢,每秒輸出大約5行,我想要找到一種更快完成相同結果的方法。如何加快我的大熊貓數據框上的迭代功能?
def myModel(df):
A_series = df['A']
B_series = df['B']
seriesLength = A_series.size
# Make a new empty column in the dataframe to hold the predicted values
df['predicted_series'] = np.nan
# Make a new empty column to store whether or not
# prediction matches predicted matches B
df['wrong_prediction'] = np.nan
prev_B = B_series[0]
for x in range(1, seriesLength):
prev_A = A_series[x-1]
prev_B = B_series[x-1]
#set the predicted value to equal B if A has two equal values in a row
if A_series[x] == prev_A:
if df['predicted_series'][x] > 0:
df['predicted_series'][x] = df[predicted_series'][x-1]
else:
df['predicted_series'][x] = B_series[x-1]
有沒有一種方法可以將矢量化或使其運行速度更快?在目前情況下,預計需要數小時。它真的需要這麼長時間嗎?似乎沒有500,000行應該給我的程序那麼多問題。
您是否正在使用Python 3.x?如果沒有,至少嘗試從'range'切換到'xrange'。 – quapka
我正在使用python 2.x.我會編輯我的問題來包含它。 – Richard
是這個文本或數值數據? – Grr