【问题标题】:Execute 2 dataframes inside a function in Python在 Python 中的函数内执行 2 个数据帧
【发布时间】: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())

上面的脚本工作正常,但我不明白如何在函数中使用脚本,然后在数据帧上使用它。

需要建议。

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    我没有得到你想要的,但为什么不将两个数据帧交给函数呢?

    import pandas as pd
    def test(df1: pd.DataFrame, df2: pd.DataFrame):
        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())
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多