【发布时间】:2020-02-01 12:51:14
【问题描述】:
数据框中的列包含我要匹配的关键字。
我想检查每列是否包含任何关键字。如果是,请打印出来。
尝试如下:
import pandas as pd
import re
Keywords = [
"Caden(S, A)",
"Caden(a",
"Caden(.A))",
"Caden.Q",
"Caden.K",
"Caden"
]
data = {'People' : ["Caden(S, A) Charlotte.A, Caden.K;", "Emily.P Ethan.B; Caden(a", "Grayson.Q, Lily; Caden(.A))", "Mason, Emily.Q Noah.B; Caden.Q - Riley.P"]}
df = pd.DataFrame(data)
pat = '|'.join(r"\b{}\b".format(x) for x in Keywords)
df["found"] = df['People'].str.findall(pat).str.join('; ')
print df["found"]
它返回楠。我想挑战在于关键字中的空格和括号。
获得理想输出的正确方法是什么?谢谢。
Caden(S, A); Caden.K
Caden(a
Caden(.A))
Caden.Q
【问题讨论】:
-
pat = r'(?<!\w)(?:{})(?!\w)'.format('|'.join(map(re.escape, sorted(Keywords,key=len,reverse=True))))?我不确定它是否会起作用,因为您似乎需要列出所有值。如果有W1和W1 W2,则只会返回W1 W2 -
好的,让我们删除 cmets。请修正问题中的逗号。
标签: python regex pandas dataframe