【问题标题】:Compare strings of a column in a dataframe with a set of words in a list将数据框中列的字符串与列表中的一组单词进行比较
【发布时间】:2020-05-31 18:20:00
【问题描述】:

我有一个包含推文的单列 full_text 的数据框,并且有一个包含否定词的列表 negative。我想创建一个新列,如果在推文中找到否定词,则返回布尔值,如 10(如果未找到)。

【问题讨论】:

  • 我想提取推文的父数据框,基于列表negative包含负面词的2组正面和负面推文。

标签: python pandas compare tweets


【解决方案1】:

好的,假设我们有一个数据框data 和列表negative_words,如下所示:

data = pd.DataFrame({
    'Tweets' : ['This is bad', 'This is terrible', 'This is good', 'This is great'],
})

negative_words = ['bad', 'terrible']

然后我们可以这样做:

1) 我们可以将lambda 函数与any 一起使用:

# create lambda with any:
data['Negative'] = data.apply(lambda x: True if any(word in x.Tweets for word in negative_words) else False, axis=1)

会得到:

             Tweets  Negative
0       This is bad      True
1  This is terrible      True
2      This is good     False
3     This is great     False

【讨论】:

  • 谢谢!这看起来很健壮。但是我们可以减少两行代码吗
  • 如果 'Tweets` 是一个列表而不是数据框,我们可以使用 lambda 函数吗?
  • text4b = list(filter(lambda x: negative in x, text)) 它给出了错误。有人可以帮忙吗?
  • text 是包含超过 50,000 条推文的推文列表。
  • 您可以这样做:data = pd.DataFrame({'Tweets' : ['tweet1', 'tweet2' ...]}) 将列表转换为数据框
猜你喜欢
  • 1970-01-01
  • 2020-10-03
  • 2020-04-15
  • 2012-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多