【问题标题】:Separate keywords and @ mentions from dataset从数据集中分离关键字和@提及
【发布时间】:2016-09-10 11:56:53
【问题描述】:

我有一个庞大的数据集,在 100 多个 csv 文件中有几列和大约 10k 行,现在我只关心一个具有消息格式的列,我想从中提取两个参数。我进行了广泛的搜索,发现两个解决方案看起来很接近,但还不足以解决这里的问题。 ONE & TWO

输入:列名"Text",每条消息都是 csv 中的单独行。

"Let's Bounce!😉  #[message_1]

 Loving the energy & Microphonic Mayhem while…" #[message_2]

RT @IVijayboi: #[message_3]   @Bdutt@sardesairajdeep@rahulkanwal@abhisarsharma@ppbajpayi@Abpnewd@Ndtv@Aajtak#Jihadimedia@Ibn7 happy #PresstitutesDay

 "RT @RakeshKhatri23: MY LIFE #[message_4]

        WITHOUT YOU 

        IS

        LIKE 

        FLOWERS WITHOUT 

        FRAGRANCE 💞💞

        ~True Love~"


  Me & my baby ðŸ¶â¤ï¸ðŸ‘­ @ Home Sweet Home  #[message_5]

输入是一个 CSV 文件,其中包含数据中的其他几列,但我只对这一列感兴趣。我想将 @name#keyword 从输入中分离到一个新列中,例如:

预期输出

text, mentions, keywords 
[message], NAN, NAN
[message], NAN, NAN
[message], @IVijayboi, #Jihadimedia  
           @Bdutt      #PresstitutesDay
           @sardesairajdeep 
           @rahulkanwal 
           @abhisarsharma 
           @ppbajpayi 
           @Abpnewd 
           @Ndtv 
           @Aajtak  
           @Ibn7

正如我们在输入中看到的,第一条和第二条消息没有@#,因此列值为NAN,但对于第三条消息,它有10 个@ 和2​​ 个# 关键字。

简而言之,我如何将 @ 提到的名称和 # 关键字从消息中分隔到单独的列中。

【问题讨论】:

  • 您也可以添加您当前的代码吗?您的输入和输出数据非常神秘,所以我不太明白您想在这里做什么。
  • 我处于不了解如何将整个消息读取为行以及如何将其分开的位置。所以情况就像除了导入包之外我无法编写任何代码:-(

标签: python regex pandas dataset data-cleaning


【解决方案1】:

我怀疑你想使用正则表达式。我不知道你的@提及和#关键字被允许采用的确切格式,但我猜@([a-zA-Z0-9]+)[^a-zA-Z0-9]这种形式的东西会起作用。

#!/usr/bin/env python3
import re

test_string = """Text
"Let's Bounce!😉
Loving the energy & Microphonic Mayhem while…"
RT @IVijayboi: etc etc"""

mention_match = re.compile('@([a-zA-Z0-9]+)[^a-zA-Z0-9]')
for match in mention_match.finditer(test_string):
    print(match.group(1))

hashtag_match = re.compile('#([a-zA-Z0-9]+)[^a-zA-Z0-9]')
for match in hashtag_match.finditer(test_string):
    print(match.group(1))

希望这能给您足够的入门知识。

【讨论】:

  • 非常感谢。对于初学者,我可以从这个开始。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-27
  • 2014-07-30
  • 2017-12-10
  • 2018-07-14
  • 1970-01-01
相关资源
最近更新 更多