【发布时间】:2018-06-04 21:11:03
【问题描述】:
我正在解析一个包含字符串对象行的 pandas 数据框 df1。我有一个关键字参考列表,需要删除 df1 中包含参考列表中任何单词的每一行。
目前,我是这样做的:
reference_list: ["words", "to", "remove"]
df1 = df1[~df1[0].str.contains(r"words")]
df1 = df1[~df1[0].str.contains(r"to")]
df1 = df1[~df1[0].str.contains(r"remove")]
这不能扩展到数千个单词。但是,当我这样做时:
df1 = df1[~df1[0].str.contains(reference_word for reference_word in reference_list)]
我产生错误第一个参数必须是字符串或编译模式。
按照this的解决方案,我试过了:
reference_list: "words|to|remove"
df1 = df1[~df1[0].str.contains(reference_list)]
不会引发异常,但不会解析所有单词。
如何有效地使用带有单词列表的 str.contains?
【问题讨论】:
-
当你说“不可扩展”时,你的意思是你会有一堆重复的代码吗?如果是这样,请使用循环:
for reference_word in reference_list: -
你试过this问题吗?
-
我会先加入这些词并将它们传递给
str.contains。 -
你能详细说明一下吗:
Which doesn't raise an exception but doesn't parse all words eather.?你能提供一个例子来证明它不起作用吗?因为它应该。 -
@sudonym 如果您正在寻找超过正则表达式的速度,我建议您通过 Flasktext medium.freecodecamp.org/… 获得 10000 倍速度
标签: python regex string pandas dataframe