[問題] for + if 優化問題

看板Python作者 (Brahms)時間6年前 (2019/04/29 03:15), 編輯推噓8(804)
留言12則, 7人參與, 6年前最新討論串1/4 (看更多)
想請教各位大大 在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 請問要怎麼修改可以速度快一點.. 謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.137.171.226 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1556478949.A.C31.html

04/29 07:05, 6年前 , 1F
改用numpy array, 有需要再轉字典
04/29 07:05, 1F

04/29 12:34, 6年前 , 2F
題外話,盡量別用chain index的方式取值..
04/29 12:34, 2F

04/29 12:35, 6年前 , 3F
基本上df盡量不要用for去操作,可以使用內建method就
04/29 12:35, 3F

04/29 12:35, 6年前 , 4F
用,速度差蠻多的
04/29 12:35, 4F

04/29 16:36, 6年前 , 5F
np.where 可以試試
04/29 16:36, 5F

04/29 18:59, 6年前 , 6F
因為你用index 要速度差很多
04/29 18:59, 6F

04/29 23:51, 6年前 , 7F
謝謝大家!!努力研究如何避免在df中用for操作..
04/29 23:51, 7F

04/29 23:51, 6年前 , 8F
速度真的差很多!!
04/29 23:51, 8F

04/30 01:45, 6年前 , 9F
不只是pandas的dataframe,其實一般能不用for就不用for..
04/30 01:45, 9F

05/02 03:04, 6年前 , 10F
不用for 怎麼循環執行??
05/02 03:04, 10F

05/02 16:02, 6年前 , 11F
所以我是說「能不用就不用啊」,像有限次的矩陣運算這種
05/02 16:02, 11F

05/02 16:03, 6年前 , 12F
能夠用現成package運算塞滿pipe line來提昇效率是最好~
05/02 16:03, 12F
文章代碼(AID): #1SnVlbmn (Python)
文章代碼(AID): #1SnVlbmn (Python)