Pandas-使用一个数据帧列的子字符串比较两个数据帧

Pandas-使用一个数据帧列的子字符串比较两个数据帧,pandas,Pandas,我正在尝试使用一列中的子字符串将两个数据帧与另一个数据帧进行比较 我的数据如下所示: 数据帧1 prod_name, prod_id, prod_category prod_1, cate_1000101, category_1 prod_2, cate_123001, category_2 prod_3, cate_900, category_3 prod_4, cate_808, category_4 数据帧2 bill_id, bill_date, prod_ref 101, 2021

我正在尝试使用一列中的子字符串将两个数据帧与另一个数据帧进行比较

我的数据如下所示:

数据帧1

prod_name, prod_id, prod_category
prod_1, cate_1000101, category_1 
prod_2, cate_123001, category_2
prod_3, cate_900, category_3
prod_4, cate_808, category_4
数据帧2

bill_id, bill_date, prod_ref
101, 2021-01-01, 3001
102, 2021-01-01, 5001
103, 2021-01-01, 8080
我试图比较数据帧1中的prod_id的任何部分是否在数据帧2中的prod_ref中可用

bill_id, bill_date, prod_ref
101, 2021-01-01, 3001
102, 2021-01-01, 5001
103, 2021-01-01, 8080
预期产出:

prod_name, prod_id, bill_id, bill_date, prod_ref
prod_2, cate_123001, 101, 2021-01-01, 3001
prod_4, cate_808, 103, 2021-01-01, 8080

我能够使用下面的命令获得所需的输出

df1.merge(df2, left_on = df2.prod_ref.str.extract('(\d+)', expand = False), right_on = df1.prod_id.str.extract('(\d+)', expand = False), how = 'left')

prod\u ref
是字符串列吗?@DerekO,是的,它属于string类型。子字符串匹配的长度有限制吗?因为似乎
prod\u ref=5001
也可以与包含
1
的任何
prod\u id
匹配,例如
prod\u id=cate\u 1000101
当您说出prod\u id的任何部分时,是否有您愿意比较的最小位数?808在8080中,但是123001结尾的01在3001和5001中@KevinNash噢,太好了!当你有能力的时候,你应该接受你自己的答案,这样有相同问题的人就可以得到正确的答案。干杯