首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从pandas专栏中删除列表中的单词- python 2.7

从pandas专栏中删除列表中的单词- python 2.7
EN

Stack Overflow用户
提问于 2018-07-20 20:35:43
回答 3查看 2.6K关注 0票数 1

我有一个文本文件,其中包含一些我想从我的数据框中删除的字符串。数据框观测值包含ext文件中存在的文本。

下面是文本文件- https://drive.google.com/open?id=1GApPKvA82tx4CDtlOTqe99zKXS3AHiuD

这里是链接;Data = https://drive.google.com/open?id=1HJbWTUMfiBV54EEtgSXTcsQLzQT1rFgz

我使用了以下代码-

代码语言:javascript
运行
复制
import nltk
from nltk.tokenize import word_tokenize 
file = open("D://Users/Shivam/Desktop/rahulB/fliter.txt")
result = file.read()
words = word_tokenize(result)

我加载了文本文件,并将它们转换为单词/标记。

这是我的数据框架。

代码语言:javascript
运行
复制
text
0   What Fresh Hell Is This? January 31, 2018 ...A...
1   What Fresh Hell Is This? February 27, 2018 My ...
2   What Fresh Hell Is This? March 31, 2018 Trump ...
3   What Fresh Hell Is This? April 29, 2018 Michel...
4   Join Email List Contribute Join AMERICAblog Ac...

如果你看到这个,这些文本会出现在所有的行中,比如“这是什么新鲜的地狱?”或者"Join Email List Contribute Join AMERICAblog Ac“、"Sign in Daily Roundup MS Legislature Elected O”等等。

我使用了这个for循环

代码语言:javascript
运行
复制
for word in words:
    df['text'].replace(word, ' ')

是我的错。

代码语言:javascript
运行
复制
error                                     Traceback (most recent call last)
<ipython-input-168-6e0b8109b76a> in <module>()
----> 1 df['text'] = df['text'].str.replace("|".join(words), " ")

D:\Users\Shivam\Anaconda2\lib\site-packages\pandas\core\strings.pyc in replace(self, pat, repl, n, case, flags)
   1577     def replace(self, pat, repl, n=-1, case=None, flags=0):
   1578         result = str_replace(self._data, pat, repl, n=n, case=case,
-> 1579                              flags=flags)
   1580         return self._wrap_result(result)
   1581 

D:\Users\Shivam\Anaconda2\lib\site-packages\pandas\core\strings.pyc in str_replace(arr, pat, repl, n, case, flags)
    422     if use_re:
    423         n = n if n >= 0 else 0
--> 424         regex = re.compile(pat, flags=flags)
    425         f = lambda x: regex.sub(repl=repl, string=x, count=n)
    426     else:

D:\Users\Shivam\Anaconda2\lib\re.pyc in compile(pattern, flags)
    192 def compile(pattern, flags=0):
    193     "Compile a regular expression pattern, returning a pattern object."
--> 194     return _compile(pattern, flags)
    195 
    196 def purge():

D:\Users\Shivam\Anaconda2\lib\re.pyc in _compile(*key)
    249         p = sre_compile.compile(pattern, flags)
    250     except error, v:
--> 251         raise error, v # invalid expression
    252     if not bypass_cache:
    253         if len(_cache) >= _MAXCACHE:

error: nothing to repeat
EN

Stack Overflow用户

发布于 2018-07-20 21:18:06

您可以使用

代码语言:javascript
运行
复制
df['text'] = df['text'].str.replace(r"\s*(?<!\w)(?:{})(?!\w)".format("|".join([re.escape(x) for x in words])), " ")

r"(?<!\w)(?:{})(?!\w)".format("|".join([re.escape(x) for x in words]))行将执行以下步骤:

  • re.escape(x) for x in words] -将转义要与正则表达式一起使用的单词中的所有特殊字符safely
  • "|".join([...) -将创建将由正则表达式engine
  • r"\s*(?<!\w)(?:{})(?!\w)".format(....)匹配的替换-将创建一个类似\s*(?<!\w)(?:word1|word2|wordn)(?!\w)的正则表达式,该正则表达式将匹配列表中的整个单词(\s*还将删除单词前的0+空格)。
票数 0
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51442688

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档