看板 Python 關於我們 聯絡資訊
想請教各位大大 在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
germun: 改用numpy array, 有需要再轉字典 04/29 07:05
iphone2003: 題外話,盡量別用chain index的方式取值.. 04/29 12:34
iphone2003: 基本上df盡量不要用for去操作,可以使用內建method就 04/29 12:35
iphone2003: 用,速度差蠻多的 04/29 12:35
nickchen0304: np.where 可以試試 04/29 16:36
TitanEric: 因為你用index 要速度差很多 04/29 18:59
Brahms5566: 謝謝大家!!努力研究如何避免在df中用for操作.. 04/29 23:51
Brahms5566: 速度真的差很多!! 04/29 23:51
sma1033: 不只是pandas的dataframe,其實一般能不用for就不用for.. 04/30 01:45
jp956956: 不用for 怎麼循環執行?? 05/02 03:04
sma1033: 所以我是說「能不用就不用啊」,像有限次的矩陣運算這種 05/02 16:02
sma1033: 能夠用現成package運算塞滿pipe line來提昇效率是最好~ 05/02 16:03