Google Sheets проверка значений по двум спискам

Есть две таблицы:

Phone1
88312333666; 89101054581; 88312617706
89307167823
89307167823
89200211539; 89200239899; 89519012568
89108917638
89108917638
89063661063
89063661063

И таблица:

Phone2
89101054581
88312617706
89307167823
89040324355
89519012568
89200239899
89067894657
89108917638

В столбце Phone1 в каждой ячейке может содержаться до 30 номеров через знак ";".

Нужно проверить каждое значение ячейки в столбце Phone1 со значениями в столбце Phone2, при этом должна получится вот такая табличка:

N              Phone1                                      Phone2
1             88312333666; 89101054581; 88312617706     89101054581
                                                        88312617706
2             89307167823                               89307167823
3             89200211539; 89200239899; 89519012568     89200239899
                                                        89519012568
4             89108917638                               89108917638

Просто сравнить ячейку с ячейкой - понятно, а как в данном случае сделать?


Ответы (1 шт):

Автор решения: MaxU
res = t2.assign(phone=t2["Phone2"].astype(str)).merge(t1.assign(phone=t1["Phone1"].str.split(r";\s*")).explode("phone"), how="left").drop(columns="phone")

результат:

In [382]: res
Out[382]:
        Phone2                                 Phone1
0  89101054581  88312333666; 89101054581; 88312617706
1  88312617706  88312333666; 89101054581; 88312617706
2  89307167823                            89307167823
3  89307167823                            89307167823
4  89040324355                                    NaN
5  89519012568  89200211539; 89200239899; 89519012568
6  89200239899  89200211539; 89200239899; 89519012568
7  89067894657                                    NaN
8  89108917638                            89108917638
9  89108917638                            89108917638
→ Ссылка