【问题标题】:Python Pandas Vectorize removing unpopular hashtags out of StringsPython Pandas Vectorize 从字符串中删除不受欢迎的主题标签
【发布时间】:2019-07-25 09:05:12
【问题描述】:

我有一个函数可以查看推文并仅提取流行的主题标签和句柄。问题是我有一个大数据集,这需要 10 分钟或更长时间才能完成。我正在寻找一种方法来“矢量化”这个函数以使其运行得更快。

我已经有一个热门话题标签列表

def get_popular_hashes(myString):
   myList = myString.split(' ')
   newStr = ''
   for x in myList:
      if x in popular_tags_list:
         newStr+=' '+x
   return newStr  

tweets2["popularHandles"] = tweets2.HashesAndHandles.apply(get_popular_hashes)

如果我能找到一种无需.apply() 的方法,那就更好了。

例如:

["I'm hungry. let's eat! #curlyfries @jackinthebox",
 "I got a 4.0 last semester! #scholarship #hardwork #stackoverflow"]

可能变成:

["@jackinthebox",
"#stackoverflow"
]

非常感谢你们!

【问题讨论】:

  • 如果popular_tags_list是一个显着长度的列表,replacing it with a set would work
  • 另外,您可以稍微优化newStr 的构造:newStr = ' '.join(filter(popular_tags_set.__contains__, myList))newStr = ' '.join(x for x in myList if x in popular_tags_set)
  • get_popular_hashtags 的长度为 14000。
  • 你们两个真的很好用!
  • 这里的 '.__contains__' 的目的是什么?

标签: python pandas numpy vectorization series


【解决方案1】:

这是基于您的 cmets 的解决方案。它工作得很好,而且速度更快!如此令人兴奋! 10-15 分钟缩短到 3 秒 - (甚至不是开玩笑)。

def trim_unpopular_hashes_vectorized(myStr):
   myList = myStr.split(' ')
   newStr = ' '.join(filter(popular_tags_set.__contains__, myList))
   return newStr     



popular_tags_set=set(popular_tags_list)

tweets2["popularHandles"] = tweets2.HashesAndHandles.apply(trim_unpopular_hashes_vectorized)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-10
    • 2012-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-14
    相关资源
    最近更新 更多