Вот один из способов сделать это sh.
Pd.concat и использование .all для проверки наличия всех слов.
Проверьте, заканчивается ли тот же столбец историей.
Проверьте, заканчивается ли следующий столбец (df.shift (-1)) c.
Редактировать: После читая некоторые комментарии, кажется, что вы также хотите, чтобы следующая строка, заканчивающаяся c, была Истиной.
Я добавил дополнительный код в конце, чтобы добавить это условие.
import pandas as pd
df = pd.DataFrame({'col1': ['Draft SW Quality Assurance Story', 'alex ac', 'anny ac', 'antoine ac','aze epic', 'bella ac', 'Complete SW Quality Assurance Plan Story', 'celine ac','wqas epic', 'karmen ac', 'kameilia ac', 'Update SW Quality Assurance Plan Story', 'joseph ac','Update SW Quality Assurance Plan ac', 'joseph ac'],
'col2': ['aa', 'bb', 'cc', 'dd','ee', 'ff', 'gg', 'hh', 'ii', 'jj', 'kk', 'll', 'mm', 'nn', 'oo']})
print(df)
list_words="SW Quality Plan Story"
set_words = set(list_words.split())
#check if list_words is in the cell
df['TrueFalse']=(pd.concat([df['col1'].str.contains(word) for word in set_words],axis=1).all(axis=1)) & (df['col1'].str.endswith('Story')) & (df['col1'].shift(-1).str.endswith('ac'))
##Make sure line ends with ac and prev line follows conditions
df['AC_COL'] = df['TrueFalse'].shift(1).fillna(False)
df['Final_TrueFalse'] = df['TrueFalse'] | df['AC_COL']
print(df[['col1','col2','Final_TrueFalse']])
col1 col2 Final_TrueFalse
0 Draft SW Quality Assurance Story aa False
1 alex ac bb False
2 anny ac cc False
3 antoine ac dd False
4 aze epic ee False
5 bella ac ff False
6 Complete SW Quality Assurance Plan Story gg True
7 celine ac hh True
8 wqas epic ii False
9 karmen ac jj False
10 kameilia ac kk False
11 Update SW Quality Assurance Plan Story ll True
12 joseph ac mm True
13 Update SW Quality Assurance Plan ac nn False
14 joseph ac oo False