Re: [問題] 條件扣減金額及消訂單

看板Python作者 (悠閒)時間5年前 (2020/07/03 17:17), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《rounders (望仔)》之銘言: : 大家好 : 我有一些訂單資料(data)有日期、人名、金額, : 客戶會匯錢進來(remit),想把匯入的錢日期順序扣減訂單金額併入data第四欄 : 如果匯入餘額為0,就把符合金額訂單列出;如果金額無法剛好抵訂單就產出另一資料 : 再以人工處理。 : 目前只想到先抓人名產出各別DF的金額欄轉為LIST,再用迴圈扣除判斷餘數是否為0或負數 : 剛寫還是很卡 : 所以上來問問這樣做是可行的嗎?有什麼好方法或是方向呢,感謝大家了。 : 訂單和匯入款如下 : import pandas as pd : data = pd.DataFrame( : [['0601', 'Ming', 500], : ['0602', 'Ming', 800], : ['0601', 'Wang', 600], : ['0602', 'Wang', 400], : ['0603', 'Wang', 1500], : ['0604', 'Wang', 5500], : ['0601', 'Lin', 1500], : ['0602', 'Lin', 2500], : ['0603', 'Lin', 3500]], : columns=['Date', 'Name', 'Trade']) : remit = pd.DataFrame( : [['Ming', 1300], : ['Wang', 2500], : ['Lin', 1800]], : columns=['Name', 'remit']) # 先做一次排序 data2 = data.groupby('Name').apply(lambda x:x.sort_values('Date')).join(remit.set_index('Name')).reset_index(drop=True) # cum1用來判斷訂單總資金 data2['cum1'] = data2.groupby('Name').apply(lambda x: x.Trade.cumsum()).reset_index(drop=True) data2['cum2'] = data2.groupby('Name').apply(lambda x: x.Trade.cumsum().shift(1).fillna(0)).reset_index(drop=True) # 判斷當日可用匯款資金 data2['cum3'] = data2.remit-data2.cum2 #列出訂單金額等於匯入款的用戶 data2.groupby('Name').apply(lambda x:x.iloc[len(x)-1].cum1 <= x.iloc[len(x)-1].remit) #列出可繳納訂單日期 data2[data2.cum3 >= data2.Trade] -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 211.21.2.252 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1593767848.A.129.html
文章代碼(AID): #1U_lUe4f (Python)
討論串 (同標題文章)
文章代碼(AID): #1U_lUe4f (Python)