[問題] for + if 優化問題

作者: Brahms5566 (Brahms)   2019-04-29 03:15:47
想請教各位大大
在python裡面要怎麼寫出excel以下的功能:
if A2=A1, 則B2=A1+1 , 否則 B2=1
小弟試寫for+if如下, 但速度實在太慢, excel在B欄用if函數往下拉只需要5秒,
python卻要120秒...
df是dataframe, 有A, B兩欄
for i in range(len(df)):
if df['A'][i+1] == df['A'][i]:
df['B'][i+1] = df['A'][i] + 1
else:
df['B'][i+1] = 1
請問要怎麼修改可以速度快一點..
謝謝!
作者: germun (ger)   2019-04-29 07:05:00
改用numpy array, 有需要再轉字典
作者: iphone2003 (307)   2019-04-29 12:34:00
題外話,盡量別用chain index的方式取值..基本上df盡量不要用for去操作,可以使用內建method就用,速度差蠻多的
作者: nickchen0304 (CYCNC35)   2019-04-29 16:36:00
np.where 可以試試
作者: TitanEric (泰坦)   2019-04-29 18:59:00
因為你用index 要速度差很多
作者: Brahms5566 (Brahms)   2019-04-29 23:51:00
謝謝大家!!努力研究如何避免在df中用for操作..速度真的差很多!!
作者: sma1033 (死馬)   2019-04-30 01:45:00
不只是pandas的dataframe,其實一般能不用for就不用for..
作者: jp956956 (儲備里長伯)   2019-05-02 03:04:00
不用for 怎麼循環執行??
作者: sma1033 (死馬)   2019-05-02 16:02:00
所以我是說「能不用就不用啊」,像有限次的矩陣運算這種能夠用現成package運算塞滿pipe line來提昇效率是最好~

Links booklink

Contact Us: admin [ a t ] ucptt.com