У меня есть большое количество предложений, из которых я хочу извлечь под-предложения, начинающиеся с определенных словосочетаний. Например, я хочу извлечь сегменты предложения, которые начинаются с «что делает» или «что есть» и т. Д. (По существу, исключая слова из предложения, которые появляются перед парами слов). И предложения, и пары слов хранится в DataFrame
:
'Sentence' 'First2'
0 If this is a string what does it say? 0 can I
1 And this is a string, should it say more? 1 should it
2 This is yet another string. 2 what does
3 etc. etc. 3 etc. etc
Результат, который я хочу получить из приведенного выше примера:
0 what does it say?
1 should it say more?
2
Самое очевидное решение (по крайней мере для меня) ниже не работает. Он использует только первую пару слов b
, чтобы пройти все предложения r
, но не остальные b
.
a = df['Sentence']
b = df['First2']
#The function seems to loop over all r's but only over the first b:
def func(z):
for x in b:
if x in r:
s = z[z.index(x):]
return s
else:
return ‘’
df['Segments'] = a.apply(func)
Кажется, что циклирование двух DataFrames одновременно таким образом не работает. Есть ли более эффективный и действенный способ сделать это?