【发布时间】:2021-05-17 20:46:06
【问题描述】:
我一直在编写一个脚本,其中在一个函数中使用了 2 个数据帧。 df1 和 df2。
到目前为止,我已经为单个数据帧使用了一个函数,但我不明白如何处理 2 个数据帧。
单独工作时(不使用任何函数)效果很好,但我不知道如何使用我们必须处理 2 个数据帧的函数。 df1 和 df2
数据框1
id_number company_name match_acc
IN2231D AXN pvt Ltd
UK654IN Aviva Intl Ltd
SL1432H Ship Incorporations
LK0678G Oppo Mobiles pvt ltd
NG5678J Nokia Inc
Dataframe2
identity_no Pincode company_name
IN2231 110030 AXN pvt Ltd
UK654IN 897653 Aviva Intl Ltd
SL1432 07658 Ship Incorporations
LK0678G 120988 Oppo Mobiles Pvt Ltd
获取输出:
id_number company_name match_acc
IN2231D AXN pvt Ltd 92
UK654IN Aviva Intl Ltd 100
SL1432H Ship Incorporations 92
LK0678G Oppo Mobiles pvt ltd 100
NG5678J Nokia Inc 43
我一直在使用的代码:
df1 = pd.read_excel(open(r'input.xlsx', 'rb'), sheet_name='sheet1')
df2 = pd.read_excel(open(r'input.xlsx', 'rb'), sheet_name='sheet2')
from fuzzywuzzy import fuzz
希望在函数中使用以下脚本,例如。定义测试(x):
cross = df1[['id_number']].merge(df2[['identity_no']], how='cross')
cross = cross.dropna(subset=['GST_No','GSTIN'])
cross['match'] = cross.apply(lambda x: fuzz.ratio(x.id_number, x.identity_no), axis=1)
df1['match_acc'] = df1.id_number.map(cross.groupby('id_number').match.max())
上面的脚本工作正常,但我不明白如何在函数中使用脚本,然后在数据帧上使用它。
需要建议。
【问题讨论】: