仅当列表中只有一个匹配单词时提取

2024-09-29 03:23:21 发布

您现在位置:Python中文网/ 问答频道 /正文

fruit_type = ['Apple','Banana','Cherries','Dragonfruit']


for row in df['sentence']:
    sentence['fruit_type'] = df['sentence'].str.extract("(" + "|".join(fruit_type) +")", expand=False)

上述代码的结果是:

df
sentence                    | fruit_type
here is an apple            | apple
here is a banana, an apple  | banana
here is an orange, a banana | orange

如何修改代码,以便如果df['sentence']中有多个水果类型,df['fruit_type']将返回一个NaN


Tags: 代码anappledfhereistypesentence
1条回答
网友
1楼 · 发布于 2024-09-29 03:23:21

代替extract,您可以将exctractallgroupbyapply结合使用:

首先,要获取所有匹配项:

df['sentence'].str.extractall("(" + "|".join(fruit_type) +")")
        0
match   
0   0   apple
1   0   banana
    1   apple
2   0   banana

注意有pandas.MultiIndex

然后,使用.groupby(level=0)[0].apply(list)您将得到:

0            [apple]
1    [banana, apple]
2           [banana]

最后,在使用.apply(lambda x: x[0] if len(x) == 1 else np.nan)之后:

0     apple
1       NaN
2    banana

相关问题 更多 >