Я хочу автоматизировать сверку банковских операций. Есть 2 таблицы, банковская таблица и системная таблица, в результате чего транзакции в системной таблице задерживаются на несколько дней. Таблицы различаются по длине и не имеют соответствия 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])})
bankdf
Out[119]:
Amount BankDate
0 140 2018-12-28
1 107 2018-12-31
2 132 2019-01-03
3 188 2019-01-06
4 75 2019-01-09
5 152 2019-01-12
6 88 2019-01-15
7 159 2019-01-18
8 132 2019-01-21
9 107 2019-01-24
systemdf
Out[120]:
Amount SystemCreditDate
0 107 2019-01-04
1 132 2019-01-07
2 190 2019-01-10
3 75 2019-01-13
4 152 2019-01-16
5 88 2019-01-19
6 110 2019-01-22
7 132 2019-01-25
8 132 2019-01-28
2 таблицы необходимо объединить в зависимости от того, где «Сумма» соответствует И разность дат составляет менее 6 дней (SystemCreditDate - BankDate) <6). </p>
Окончательный результат должен выглядеть примерно так:
Amount BankDate SystemCreditDate
1 107 2018-12-31 2019-01-04
2 132 2019-01-03 2019-01-07
3 75 2019-01-09 2019-01-13
4 152 2019-01-12 2019-01-16
5 88 2019-01-15 2019-01-19
6 132 2019-01-21 2019-01-25