0

我有一个 pandas df 列,其中包含一些文本。现在我想将此文本的每个单词与列表中的元素进行比较,如果有匹配项,那么我想将该单词添加到新列中。虽然,我可以使用循环提取这些(虽然不理想)但是当涉及到没有匹配的文本时,我无法追加任何内容。例如。

python list: bodyparts = ['thumb', 'back', 'elbow', 'should', 'ankle', 'hamstring', 'knee']

此外,以下表达式仅部分完成工作,并且仅附加 0 或 1,如果有匹配或没有匹配。

input_file_1['bodyparts'] = input_file_1['Description'].apply(lambda x: sum(i in bodyparts for i in x.split()))...... . 我可以使用任何其他表达式,它实际上可以附加匹配的单词吗?

虽然,我可以使用循环提取这些(虽然不理想)但是当涉及到没有匹配的文本时,我无法追加任何内容。

此外,以下表达式仅部分完成工作,并且仅附加 0 或 1,如果有匹配或没有匹配。

input_file_1['bodyparts'] = input_file_1['Description'].apply(lambda x: sum(i in bodyparts for i in x.split()))

预期产出

身体部位

拇指

背部

弯头

没有任何

实际输出

1

1

1

0

4

1 回答 1

0

我认为这将完成这项工作。

bodyparts = ['thumb', 'back', 'elbow', 'shoulder', 'ankle', 'hamstring', 'knee']

def search_bodyparts(s, bodyparts):
    found_bodyparts = [bodypart for bodypart in bodyparts if bodypart in s]
    if len(found_bodyparts)>0:
        return ', '.join(found_bodyparts)
    else:
        return None

df['bodyparts'] = df['Description'].apply(lambda x : search_bodyparts(x, bodyparts))
于 2019-02-18T14:57:32.957 回答