客观的
将公司 B 的会计说明(例如“现金”)与公司 A 的会计说明(例如“现金汇总”)相匹配。
方法
- 记录公司 A 和公司 B 的会计说明,将它们放入各自的数据框中(将公司 A 的会计说明指定为“approved_accts”)。制作 A 公司的会计说明 =
approved_accts
- 使用python的fuzzywuzzy包,比较公司B的会计描述和
approved_accts
. 如果模糊模糊匹配高于某个阈值,则将“approve_accts”标签附加到公司 B 的会计说明(最好在相邻列中,以免公司 B 的原始说明丢失)。
代码
import pandas as pd
from fuzzywuzzy import process
from fuzzywuzzy import fuzz
fileLoc = r'...\mapping.xlsx'
xls = pd.ExcelFile(fileLoc)
df_plp = xls.parse('PLP')
df_nbg = xls.parse('NBG')
df_plp.head(10)
#Confirmed the plp.head layout matches the excel file
df_nbg.head(10)
#Confirmed the nbg.head layout matches the excel file
#pull out the Account Descriptions for comparison
approved_accts = df_nbg['Account Description']
plp_accts = df_plp['Account Description']
#Test fuzzywuzzy
process.extract('Cash', 'Cash Cash Rollup')
输出
process.extract('Cash', 'Cash Cash Rollup')
[('C', 90), ('a', 90), ('s', 90), ('h', 90), ('C', 90)]
process.extractOne('Cash', 'Cash Cash Rollup')
('C',90)
fuzz.token_set_ratio('Cash', 'Cash Cash Rollup')
100
问题
在输出 #1、2 中 - FuzzyWuzzy 似乎正在分解每个单独的字符以进行比较(这是不正确的)。我在网上查看并发现以下github 问题。然而,就在昨天,这个实现正在使用另一个示例。我想知道,这可能是什么原因?
对于每个帐户描述,都有一个唯一的 ID(“帐户号”)。有没有办法我可以携带这个唯一的 ID,以便 B 公司的“现金”账户(账户 ID:B123)与 A 公司的批准列表“现金现金汇总”(账户 ID:A321)相匹配,这样我就可以看到哪个帐号需要重新映射吗?从本质上讲,当我们比较每家公司的账户描述时,这些帐号只是“顺路”,但当我深入研究会计软件/ERP 系统时,它们就会变得有价值。
您是否推荐使用任何其他库(而不是fuzzywuzzy)来协助该过程?