Значение столбца поиска, если оно частично совпадает со значением столбца другого фрейма данных в pandas

#python #pandas #dataframe #data-analysis

Вопрос:

Я просмотрел свои 24 файла excel и сохранил это имя файла во фрейме данных. таким образом, мой df1 содержит только одно значение, с каждой итерацией имя файла меняется.
df1:

Имя файла-Это дополнительный шаблон индекса CBSS

Затем вложенный цикл повторяется по листам этого файла excel и сохраняет это имя листа в фрейме данных 2.
df2:
Sheetname_t
Настраиваемый IP-адрес

Я хочу получить группировку из df3, где они оба совпадают. (частично)

df3:

введите описание изображения здесь

Проще говоря, я хочу, чтобы:
если df1.Filename_t совпадает с df3.Filename
, то сопоставьте
, если df2.Sheetname_t совпадает с df3.Sheetname
, затем
верните соответствующее значение df3.Grouping.

Обратите внимание, что фактическое имя файла и его имя листа отличаются от сохраненных имен файлов и имен листов в df3. Это реальная проблема.

Я попытался использовать этот код для хранения группировки в df1, но это не сработало.

 for tup in df3.itertuples(index=False):
    print(tup)
    mask = df1['Filename_t'].str.contains(tup.Filename, regex=False)
    df1.loc[mask, 'Grouping'] = tup.Grouping

print(df1)
 

Также пробовал:

 m= df3['Filename'].apply(lambda fname: any(word in fname for word in f))
print(m)  
 

и:

 pat = '(' '|'.join(df3['Filename'])` ')'
df_f["Grouping"] = df1['Filename_t'].str.extract(pat)[0].map(df3.set_index('Filename')['Grouping'].to_dict()).fillna('')
print(df1)