Pandas字符串的性能包含列

时间:2018-05-01 14:59:35

标签: python performance pandas

我有一个83k行的数据框和一列" Text"我必须搜索约200个面具的文本。有没有办法将列传递给.str.contains()? 我能够这样做:

start = time.time()
[a["Text"].str.contains(m).sum() for m in \
b["mask"].values]
print time.time() - start

但是它取得34.013s。有没有更快的方法?

编辑: b["mask"]看起来像:

  

' PR347856 | P5478'

     

' BS7623 | B5763'

我希望每个面具的出现次数,所以我无法加入它们。

编辑:

a [" text"]包含大小约为3个字符串的字符串

1 个答案:

答案 0 :(得分:2)

也许你可以对收容操作进行矢量化。

text_contains = a['Text'].str.contains
b['mask'].map(lambda m: text_contains(m).sum())