【问题标题】:How to join two dataset using fuzzywuzzy如何使用fuzzywuzzy连接两个数据集
【发布时间】:2020-01-15 10:52:43
【问题描述】:

我们有两个数据框

数据框 1 ::

数据框 2:

需要在组合列中验证第二个数据集中的相同数据,并从第一个数据集中添加 id 列

表示输出,如 ::

!pip install fuzzywuzzy
from fuzzywuzzy import fuzz
data = pd.read_csv(dataframe 1)
df = pd.read_csv(dataframe 2)

word = data['data'].tolist()
find = df['combined'].tolist()
df_final = pd.DataFrame(columns=['combined','id'])
for j in find:
    j = str(j)
    for i in word:
        if i:
            i = str(i)
            Token_Sort_Ratio = fuzz.token_sort_ratio(j,i)
            if Token_Sort_Ratio > 70:
                #print(i)
                final = data[data.data == i]
                df1 = df[df.combined == j]
                df_final['id']=df_final['id'].append(final['id'],ignore_index=True)
                df_final['combined']= df_final['combined'].append(df1['combined'],ignore_index=True)

但数据没有附加到 df_final 数据集中, 请帮我解决这个问题。 之后我们计划在合并列上加入 df_final 和 dataframe 2

如果您有任何其他解决方案,请随时提出建议

【问题讨论】:

    标签: python python-3.x for-loop nlp fuzzywuzzy


    【解决方案1】:
    import pandas as pd 
    from fuzzywuzzy import fuzz
    
    df1 = pd.DataFrame([['12','gandhi vidhalaya 225'],['45','balvidhya mandir a 456'],['65','jspm 4568'],[45,'coep 7896']], columns= ['id','data'])
    
    df2 = pd.DataFrame([['june','gandhi vidhalaya dc 225'],['july','balvidhya mandir a 456'],['march','jspm d 4568'],['jan','coep 7896']], columns= ['month','combined']) 
    
    
    data = []
    for i in range(df1.shape[0]):
        for j in range(df2.shape[0]):
            token_ratio =  fuzz.ratio(df1['data'][i], df2['combined'][j])
            if token_ratio > 70:
               column_B = df2.iloc[j]['combined']
               column_A = df2.iloc[j]['month']
               data.append((column_B, column_A))
    
    df_final = pd.concat([df1,pd.DataFrame(data, columns  = ['combined_text','month'])], axis = 1)
    
    #Op drop the data column you will get the desired result
    df_final.drop(columns = ['data'])
    

    【讨论】:

    • 小伙伴们,如果除了fuzzywuzzy还有什么其他的解决方法,欢迎提出建议
    • 如果我们在任何数据集都有空值,上面的代码不起作用,所以在实施之前请删除空值
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-05
    • 1970-01-01
    • 1970-01-01
    • 2021-01-30
    • 2022-01-05
    相关资源
    最近更新 更多