【问题标题】:Find any word of a list in the column of dataframe在数据框的列中查找列表的任何单词
【发布时间】:2020-06-19 22:46:21
【问题描述】:

我有一个包含 4783 个元素的单词列表 negative。我想用下面的代码

tweets3 = tweets2[tweets2['full_text'].str.contains('|'.join(negative))]

但是,它给出了这样的错误error: multiple repeat at position 4193

我不明白这个错误。显然,如果我在str.contains 中使用一个单词,例如str.contains("deal"),我就能得到结果。

我所需要的只是一个新的数据框,它只包含那些包含数据框tweets2full_text 中出现的任何单词的行。

作为选择,我还想看看我是否可以有一个boolean 列作为0 or 1 的当前值和不存在值。

我在@wp78de 的帮助下使用了以下代码:

tweets2['negative'] = tweets2.loc[tweets2['full_text'].str.contains(r'(?:{})'.format('|'.join(negative)), regex=True, na=False)].copy()

【问题讨论】:

  • 也许.str.contains(r'(?:{})'.format('|'.join(words)), regex=True, na=False)]
  • 终于弄清楚出了什么问题。在 4783 个否定词元素中,有些元素拼写为 f**k, bull****, ***hole,这给 regex 的工作带来了问题。
  • 谢谢!献给所有抽出宝贵时间的人。
  • 希望对您有所帮助:stackoverflow.com/questions/20625582/…

标签: python string list dataframe contains


【解决方案1】:

对于其中可能包含正则表达式元字符的任意文字字符串,您可以使用re.escape() 函数。沿着这条线的东西应该就足够了:

.str.contains(r'(?:{})'.format(re.escape('|'.join(words)), regex=True, na=False)]

【讨论】:

    猜你喜欢
    • 2021-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-08
    • 1970-01-01
    相关资源
    最近更新 更多