【发布时间】:2018-09-21 00:31:48
【问题描述】:
如果列表中的任何单词与数据框字符串列完全匹配,我想创建一个包含 1 或 0 的新列。
list_provided=["mul","the"]
#how my dataframe looks
id text
a simultaneous there the
b simultaneous there
c mul why
预期输出
id text found
a simultaneous there the 1
b simultaneous there 0
c mul why 1
第二行赋值为 0,因为 "mul" 或 "the" 在字符串列 "text" 中不完全匹配
代码尝试到现在
#For exact match I am using the below code
data["Found"]=np.where(data["text"].str.contains(r'(?:\s|^)penalidades(?:\s|$)'),1,0)
如何遍历循环以找到提供的单词列表中所有单词的完全匹配?
编辑: 如果我按照 Georgey 的建议使用 str.contains(pattern),则 data["Found"] 的所有行都变为 1
data=pd.DataFrame({"id":("a","b","c","d"), "text":("simultaneous there the","simultaneous there","mul why","mul")})
list_of_word=["mul","the"]
pattern = '|'.join(list_of_word)
data["Found"]=np.where(data["text"].str.contains(pattern),1,0)
Output:
id text found
a simultaneous there the 1
b simultaneous there 1
c mul why 1
d mul 1
找到的列的第二行在这里应该是0
【问题讨论】:
-
@Georgy list_provided 有很多词。此外,如果我使用 str.contains(),即使第二行也会被标记为 1 如果我使用 data["text"].isin(list_provided) 它会使所有三行都为零,因为它只查找只有这些单词的单元格
标签: python string python-3.x pandas dataframe