讓我們來(lái)做這樣一個(gè)處理,如果某一列的值小于.5就把值統(tǒng)一替換為0,否則就替換為100.
原創(chuàng)不易,喜歡就轉(zhuǎn)發(fā)和給個(gè)贊吧。
首先創(chuàng)建一個(gè)dataframe:
import pandas as pdimport numpy as npimport timedf = pd.DataFrame(np.random.rand(100000, 4), columns=['A', 'B', 'C', 'D'])print(df)
數(shù)據(jù)輸出如下:
第一種方法:iterrows()
總共耗時(shí)8.12秒,iterrows()遍歷確實(shí)比較慢,讓人等得著急?。?/p>
第二種方法:iloc
總共耗時(shí)2.76秒,是iterrows的2.9倍,速度提高了很多。
第三種方法:apply函數(shù)
總共耗時(shí)52.2毫秒,是iterrows的155倍。
第四種方法:numpy的where, 使用前先導(dǎo)入numpy.
總共耗時(shí)778微秒,處理速度是iterrows的10437倍,快到讓人不敢相信。
本人覺(jué)得這個(gè)速度已經(jīng)達(dá)到極致了,那還有沒(méi)有更快的方法呢?那我們?cè)谟胣umpy的where(.values)來(lái)看看,結(jié)果簡(jiǎn)直不可思議只用了426微妙,速度快的離奇,處理速度是iterrows的一萬(wàn)九千都倍。
聯(lián)系客服