Python 通过比较包含不同格式电话号码的两个数据帧列筛选数据帧

Python 通过比较包含不同格式电话号码的两个数据帧列筛选数据帧,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个数据帧df1,包含以下格式的美国电话号码列表: 区号+电话号码 df2['phoneNumber'] = ['1123456789', '81115559999','442071231234','1111111111', '0133344556677'] 它包含国际电话号码 df2['phoneNumber'] = ['1123456789', '81115559999','442071231234','1111111111', '0133344556677'] 这个数据帧有几百行长

我有一个数据帧df1,包含以下格式的美国电话号码列表: 区号+电话号码

df2['phoneNumber'] = ['1123456789', '81115559999','442071231234','1111111111', '0133344556677']
它包含国际电话号码

df2['phoneNumber'] = ['1123456789', '81115559999','442071231234','1111111111', '0133344556677']
这个数据帧有几百行长

df1['phoneNumber'] = ['123456789', '1115559999','1112223333', '442071231234']
我还有另一个数据帧df2,它包含数百万条不同格式的电话记录,例如: 国家代码+区号+电话号码

业务中的任意拨出号码,如“9”+区号+电话号码

国际电话号码

df2['phoneNumber'] = ['1123456789', '81115559999','442071231234','1111111111', '0133344556677']
我想通过检查较小数据帧中的电话号码是否在较大的数据帧中来过滤较大的数据帧,因为较大的数据集有时会有较长的电话号码字符串

这可能吗?我一直在使用for循环和函数来过滤数据,但是循环和过滤一百万条记录需要三四分钟

多谢各位

编辑: 我当前的代码大致如下:

matching_number_list=[]
def匹配号码(电话号码、电话号码):
匹配号码=下一个((电话号码中的行对应电话号码中的行),无)
匹配号码列表。追加(匹配号码)
#当我没有在函数中使用整个df时,代码运行得更快
电话号码列表=df1['PhoneNumber']
[为zip(df2['PhoneNumber'])中的行匹配电话号码(第[0]行,电话号码列表)]
#添加具有匹配数字的附加列
df2['MatchedNumbers']=匹配号码列表
#基于匹配数的内部联接
过滤的df=pd.merge(df2,df1,how='internal',左上='MatchedNumbers',右上='PhoneNumber')

这将使
df2
中的每个电话号码与
df1
中的列表进行部分字符串匹配

df2[df2['phoneNumber'].str.contains('|'.join(df1['phoneNumber']))]

这将使
df2
中的每个电话号码与
df1
中的列表进行部分字符串匹配

df2[df2['phoneNumber'].str.contains('|'.join(df1['phoneNumber']))]

您能分享您的代码吗?您知道国家代码、区号和电话号码的长度吗?它们是固定的吗?你能分享你的代码吗?你知道国家代码、区号和电话号码的长度吗?他们修好了吗?这成功了!非常感谢。结合这段代码,有没有一种方法可以将来自df1的匹配字符串添加到过滤结果中,或者我必须通过for循环添加它?这很有效!非常感谢。结合这段代码,是否有方法将来自df1的匹配字符串添加到过滤结果中,或者我必须通过for循环添加它?