讓我們來做這樣一個處理,如果某一列的值小於.5就把值統一替換為0,否則就替換為100.
首先建立一個dataframe:
import pandas as pdimport numpy as npimport timedf = pd.DataFrame(np.random.rand(100000, 4), columns=['A', 'B', 'C', 'D'])print(df)
資料輸出如下:
第一種方法:iterrows()
總共耗時8.12秒,iterrows()遍歷確實比較慢,讓人等得著急啊!
第二種方法:iloc
總共耗時2.76秒,是iterrows的2.9倍,速度提高了很多。
第三種方法:apply函式
總共耗時52.2毫秒,是iterrows的155倍。
第四種方法:numpy的where, 使用前先匯入numpy.
總共耗時778微秒,處理速度是iterrows的10437倍,快到讓人不敢相信。
本人覺得這個速度已經達到極致了,那還有沒有更快的方法呢?那我們在用numpy的where(.values)來看看,結果簡直不可思議只用了426微妙,速度快的離奇,處理速度是iterrows的一萬九千都倍。