📜  加入按子字符串匹配的 Pandas DataFrames

📅  最后修改于: 2022-05-13 01:55:36.763000             🧑  作者: Mango

加入按子字符串匹配的 Pandas DataFrames

先决条件:熊猫

在本文中,我们将学习如何使用Python连接两个按子字符串匹配的数据帧。

使用的功能:

  • join() 将迭代中的所有元素连接成一个字符串
  • lambda( ):一个匿名方法,没有名字声明,可以接受任意数量的参数
  • find() 获取任何必需值的初始外观
  • merge() :合并两个数据帧

方法

按照以下步骤连接两个按子串匹配的数据框。

  • 创建两个数据帧。
  • 使用笛卡尔积连接两个数据框
  • 在所有数据帧中加入包含相等值的重复列
  • 加入新专栏
  • 最后,删除每个 DataFrame 中添加的列。
  • 然后我们需要向数据框中添加一个新列。为此,我们将使用“lambda”和“find”函数,其中输出大于零。
  • 现在我们打印由 substrings 匹配的连接数据帧。

下面是实现。

Python3
import pandas as pd
  
  
dataFrame1 = pd.DataFrame([['PQR', 'B1'], ['QRS', 'B2'], ['RDE', 'B3']], 
                          columns=['work_name', 'tag_name'])
  
dataFrame2 = pd.DataFrame([['RR', 'T1'], ['QR', 'T2'], ['HG', 'T3'], 
                           ['PQ', 'T4']],
                          columns=['sub_work_name', 'extra_tag_value'])
  
dataFrame1['join'] = 1
dataFrame2['join'] = 1
  
dataFrameFull = dataFrame1.merge(
  dataFrame2, on='join').drop('join', axis=1)
  
dataFrame2.drop('join', axis=1, inplace=True)
  
dataFrameFull['match'] = dataFrameFull.apply(
    lambda x: x.work_name.find(x.sub_work_name), axis=1).ge(0)
  
print(dataFrameFull[dataFrameFull['match']])


输出: