亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

根據日期范圍和值匹配合并熊貓數據框

根據日期范圍和值匹配合并熊貓數據框

森欄 2022-03-09 21:20:22
我希望自動對銀行交易進行對賬。有兩張表,銀行表和系統表,其中系統表中的交易延遲了幾天。這些表的長度各不相同,并且沒有 1:1 匹配的事務。問題是找到一種一致的方法來識別和分組協調和非協調事務。我遇到的第一個挑戰是根據日期范圍和數量加入/合并表格。Pandas.merge_asof 適合基于日期范圍連接,但僅限于 1 個基于列的連接。請參見下面的示例表:bankdf = pd.DataFrame({'BankDate': pd.date_range('2018-12-28', periods=10, freq='3D'), 'Amount': np.array([140,107,132,188,75,152,88,159,132,107])})systemdf = pd.DataFrame({'SystemCreditDate': pd.date_range('2019-01-04', periods=9, freq='3D'), 'Amount': np.array([107,132,190,75,152,88,110,132,132])})bankdfOut[119]:    Amount   BankDate0     140 2018-12-281     107 2018-12-312     132 2019-01-033     188 2019-01-064      75 2019-01-095     152 2019-01-126      88 2019-01-157     159 2019-01-188     132 2019-01-219     107 2019-01-24systemdfOut[120]:    Amount SystemCreditDate0     107       2019-01-041     132       2019-01-072     190       2019-01-103      75       2019-01-134     152       2019-01-165      88       2019-01-196     110       2019-01-227     132       2019-01-258     132       2019-01-28需要根據“金額”匹配且日期差異小于 6 天(SystemCreditDate - BankDate)< 6)來連接 2 個表。最終結果應如下所示:   Amount   BankDate SystemCreditDate1     107 2018-12-31 2019-01-042     132 2019-01-03 2019-01-073      75 2019-01-09 2019-01-134     152 2019-01-12 2019-01-165      88 2019-01-15 2019-01-196     132 2019-01-21 2019-01-25
查看完整描述

1 回答

?
慕標琳琳

TA貢獻1830條經驗 獲得超9個贊

使用DataFrame.merge和刪除不符合規則的行:


df = bankdf.merge(systemdf)

mask = (df['SystemCreditDate']-df['BankDate']).abs().dt.days<6

df = df.loc[mask, :]


print(df)


     BankDate  Amount SystemCreditDate

0  2018-12-31     107       2019-01-04

2  2019-01-03     132       2019-01-07

6  2019-01-21     132       2019-01-25

8  2019-01-09      75       2019-01-13

9  2019-01-12     152       2019-01-16

10 2019-01-15      88       2019-01-19

或刪除負數:


df = bankdf.merge(systemdf)

mask = (df['SystemCreditDate']-df['BankDate']).dt.days

mask = mask.le(6) & ~mask.lt(0)

df = df.loc[mask, :]


查看完整回答
反對 回復 2022-03-09
  • 1 回答
  • 0 關注
  • 124 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號