【问题标题】:Trying to remove large amounts of text from pandas series with a list尝试从带有列表的熊猫系列中删除大量文本
【发布时间】:2018-06-14 11:50:08
【问题描述】:

我的问题基本上如下。我有一个 pandas 数据框,其中有一列包含相当大量的文本(通常为 20 到 200 个单词)。这个数据框大约有 600k 行。最重要的是,我有一个单词列表,大约有 150k 项长,需要从数据框中的字符串中过滤掉。我目前正在使用这种方法来做到这一点:

for word in uncommon_words:
    reports['Report_Clean_Filtered'] = reports['Report_Clean'].str.replace(word, '')

其中 uncommon_words 是单词列表,reports 是数据框。

我估计这在我的机器上大约需要 27 小时。有没有更好(或至少更快)的方法来做到这一点?我有一个非常开放的心态! :)

【问题讨论】:

    标签: python performance list pandas nlp


    【解决方案1】:

    使用 or 运算符 | 加入 uncommon_words 列表并一次性替换它

    df = pd.DataFrame(dict(a=['hello bye one two', "hello", "bye 1"]))
                       a
    0  hello bye one two
    1              hello
    2              bye 1
    
    uncommon_words = ['hello', 'bye']
    
    df.a.str.replace('|'.join(uncommon_words), '')
    
    0      one two
    1             
    2            1
    

    【讨论】:

    • 这似乎可行,但仍然非常慢,您认为它可能无法快速完成吗?我实际上开始认为这可能是一个大数据问题。
    • @Daannnn 这预计需要多长时间?您是否将不得不经常执行此任务,还是只是一次性完成?这些是您在将其视为大数据问题之前要问自己的一些问题。如果是这样,请询问有关堆栈溢出的另一个问题,说明您已经尝试了我的答案,现在有人可能会采用更快的(可能是 numpy/cython)方法来解决这个问题。希望有帮助
    猜你喜欢
    • 2015-05-19
    • 1970-01-01
    • 1970-01-01
    • 2013-12-12
    • 2020-05-28
    • 2021-02-17
    • 2022-07-13
    • 2016-04-11
    • 2020-10-03
    相关资源
    最近更新 更多