说我有一个类型为list的列:
@PreUpdate
public void preUpdate() {
this.getParent().setTimeUpdated(Instant.now());
}
并且我要匹配列表中的项目:
pd.DataFrame([[["item1", "item2"]]], columns=["a"])
a
0 [item1, item2]
没有获得部分匹配项。
这可行,但可以给我部分匹配项:
mylist = ["item1", "item3"]
我在想的一种方法是在整个str.contains中使用整个单词,就像它在这里起作用一样:
df.query('a.str.join(" ").str.contains("|".join(@mylist))', engine='python')
可以正常工作,但不能在df[df.a.str.contains(r"\bitem1\b")]
或query()
当我尝试在这样的查询中实现它时,它不起作用:
eval()
我已经收到有关如何在不使用query()(df.query('a.str.join(" ").str.contains(r"\bitem1\b")', engine='python') # also use @mylist here
)的情况下执行此操作的答案,但是对于我的系统,如果我要避免重写大部分代码,则不得不使用query | eval 。
答案 0 :(得分:1)
您的正则表达式应该可以工作,只需要转义反斜杠即可:
df.query('a.str.join(" ").str.contains(r"\\bitem1\\b")', engine='python')