Re: [問題] for + if 優化問題

看板Python作者 (Brahms)時間5年前 (2019/04/29 23:50), 5年前編輯推噓2(205)
留言7則, 5人參與, 5年前最新討論串3/4 (看更多)
感謝TuCH大大的code! 成功了超快! 但又出現一個問題..如果說原本code的以下標記^的部分 改成df['B'][i] + 1 請問要怎麼寫會比較好呢? 就像excel中, 符合條件的欄位, 則B2=B1+1, 如果B1=1, 則B2 = 2 然後往下拉, 依序是3, 4, 5...直到下一個不合條件的值為原本的1, 接著再2, 3, 4..持續下去 謝謝! : : for i in range(len(df)): : if df['A'][i+1] == df['A'][i]: : df['B'][i+1] = df['A'][i] + 1 ^^^^^^^^^^ 改成=>df['B'][i] + 1 : else: : df['B'][i+1] = 1 ※ 引述《TuCH (謬客)》之銘言: : 一千萬筆大約0.6秒 給您參考看看 : import pandas as pd : import numpy as np : # 隨機產生測試資料 : data = np.random.randint(1,9,10000000) : # pandas 讀取 : df = pd.DataFrame(data) : # column 取名 : df.columns = ['A'] : # column B 初始化 : df['B'] = 1 : # 計算 : df.loc[df['A'].diff()==0,'B'] = df['A'].shift()+1 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.137.228.83 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1556553008.A.355.html ※ 編輯: Brahms5566 (223.137.228.83), 04/30/2019 00:01:22

04/30 08:17, 5年前 , 1F
這個每一個值都跟前一個值有關係 看來要用迴圈了
04/30 08:17, 1F

04/30 11:10, 5年前 , 2F
如果條件判斷不會隨著B欄的值更動產生變化 用前面Tu大的
04/30 11:10, 2F

04/30 11:10, 5年前 , 3F
寫法應該就可以了
04/30 11:10, 3F

04/30 12:40, 5年前 , 4F
其實全部換成list操作比較好 盡量不要用pandas跑迴圈
04/30 12:40, 4F

04/30 21:18, 5年前 , 5F
剛剛嘗試用group然後for enumerate轉numpy順利得到想
04/30 21:18, 5F

04/30 21:18, 5年前 , 6F
要的結果了~謝謝大家指引迷津
04/30 21:18, 6F

05/02 03:06, 5年前 , 7F
list操作什麼意思?? 先list做完再給pandas處理嗎?
05/02 03:06, 7F
文章代碼(AID): #1SnnqmDL (Python)
文章代碼(AID): #1SnnqmDL (Python)