加入Pandas数据框架,通过子串匹配
在这篇文章中,我们将学习如何用python连接两个通过子串匹配的数据框架。
使用的方法:
- join() : 将一个迭代中的所有元素连接成一个单一的字符串。
- lambda( ): 一个匿名方法,声明时没有名称,可以接受任何数量的参数。
- find() : 获得任何必要值的初始外观
- merge() : 合并两个数据帧
步骤
按照下面的步骤来连接两个由子串匹配的数据帧。
- 创建两个DataFrames。
- 使用笛卡尔乘积连接两个数据框架
- 加入一个重复的列,包括所有DataFrames中相同的值
- 加入新栏目
- 最后,删除每个DataFrame中添加的列。
- 然后我们需要在数据框架中添加一个新的列。要做到这一点,我们将使用 “lambda “和 “find “函数,其中输出大于零。
- 现在我们打印由子字符串匹配的连接数据帧。
以下是实现。
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']])
输出: