Я бы использовал apply; apply - это просто карта, которая применяет метод к каждой строке или столбцу. Результат можно поместить в отдельный столбец, как показано.
Установка фреймов данных ...
import pandas as pd
import re
df1 = {'unique_values': ['manager', 'for', 'developer', 'executive', 'engineer', 'sales'],
'counts': [9322, 8463, 7323, 5864, 5669, 4492],
'Rank': [1.0, 2.0, 3.0, 4.0, 5.0, 6.0],
'Stop_word': [False, True, False, False, False, False]}
df1 = pd.DataFrame.from_dict(df1)
df2 = {'X': ['Digital Media Planner',
'Online Bidding Executive',
'Software Developer Manager',
'Technical Support',
'Software Test Engineer -hyderabad.Software Test Engineer -hyderabad',
'Opening For Adobe Analytics Specialist.',
'Sales- Fresher-for Leading Property Consultant.',
'Opportunity For Azure Devops Architect',
'BDE',
'Technical Support/ Product Support.']}
df2 = pd.DataFrame.from_dict(df2)
Решение ...
def method(df1, df2_value):
num_values = len(df1)
for row_index in range(num_values):
row = df1.iloc[[row_index]]
df1_value = row.iloc[0,0]
stop_word = row.iloc[0,3]
if bool(re.search(df1_value, df2_value, re.IGNORECASE)):
if stop_word:
return None
else:
return df1_value
df2['Y'] = df2.apply(lambda row: method(df1, row.iloc[0]), axis=1)
print(df2)
output:
X Y
0 Digital Media Planner None
1 Online Bidding Executive executive
2 Software Developer Manager manager
3 Technical Support None
4 Software Test Engineer -hyderabad.Software Tes... engineer
5 Opening For Adobe Analytics Specialist. None
6 Sales- Fresher-for Leading Property Consultant. None
7 Opportunity For Azure Devops Architect None
8 BDE None
9 Technical Support/ Product Support. None