加入按子字符串匹配的 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']])
输出: