我有一个包含文本的数据框列,我想创建一个新列,其中包含带有名称的句子,但没有其他句子。希望最终结果如下所示:
我能够从名称列表中识别包含名称的单元格,但我在提取包含名称的句子的部分遇到了困难。
import re
import pandas as pd
import numpy as np
df = pd.DataFrame({
'ColumnA': ['Lorum ipsum. This is approved. Lorum Ipsum.', 'Lorum Ipsum. Send the contract to May. Lorum Ipsum.', 'Junk Mail from Brian.']
})
last_names_list = ['May','Brian']
df['last_names'] = ''
for x in last_names_list:
df['last_names'] = np.where(df['ColumnA'].str.contains(x),x,df['last_names'])
def f(x,y):
return re.findall(fr'[^.]{x}[^.]',y)
df['col_3'] = df.apply(lambda x: f(x['last_names'],x['ColumnA']), axis=1)
print(df)
当我打印数据框时,名称为
df[col_3']
的每一行都会生成一个空列表。
任何帮助表示赞赏。
如果您不专注于使用正则表达式,您可以修改此SO帖子中提供的答案,以自动识别包含
last_names_list
中指定的名称之一的句子:
last_names_list = ['May','Brian']
pattern = '|'.join(last_names_list)
df[df.ColumnA.str.contains(pattern)]
返回:
ColumnA
1 Lorum Ipsum. Send the contract to May. Lorum I...
2 Junk Mail from Brian.