从实体中提取主题标签,并将其添加到新列中

时间:2019-09-18 21:44:23

标签: python pandas dataframe data-science sentiment-analysis

我从json推文文件创建了以下数据框。

tweets['text'] =    list(map(lambda tweet: tweet['text'], tweets_data))
tweets['date'] =    list(map(lambda tweet: tweet['created_at'], tweets_data))
tweets['lang'] =    list(map(lambda tweet: tweet['lang'], tweets_data))
tweets['place_type'] = list(map(lambda tweet: tweet['place']['place_type'] if tweet['place'] != None else None, tweets_data))
tweets['place_name'] = list(map(lambda tweet: tweet['place']['full_name'] if tweet['place'] != None else None, tweets_data))
tweets['country'] = list(map(lambda tweet: tweet['place']['country'] if tweet['place'] != None else None, tweets_data))
tweets['hashtags'] =  list(map(lambda tweet: tweet['entities']['hashtags'], tweets_data))

hashtags列的当前输出如下:

"[{'text': 'NOJUSTICE', 'indices': [62, 72]}, {'text': 'TrumpPence', 'indices': [93, 104]}]"

我正在尝试创建一个仅包含主题标签的新列。例如:

NOJUSTICE和Trumpnce

我尝试了以下代码:

ht=[]
for s in range(len(tweets['hashtags'])):
    hasht=[]
    for t in range(len(tweets.hashtags[s])):
        hasht.append(tweets['hashtags'][s][t]['text'])
        t=t+1
    ht.append(hasht)
    s=s+1
tweets['HT']=zip(ht)

我收到以下错误:

TypeError                                 Traceback (most recent call last)
<ipython-input-38-9780008354d7> in <module>
      3     hasht=[]
      4     for t in range(len(tweets.hashtags[s])):
----> 5         hasht.append(tweets['hashtags'][s][t]['text'])
      6         t=t+1
      7     ht.append(hasht)

TypeError: string indices must be integers

sample csv file

我希望主题标签列仅包含主题标签,而不包含索引和其他内容

更新:我使用了以下建议,并得到了相同的错误

tweets['hashtags'].apply(lambda x: [d['text'] for d in x])

1 个答案:

答案 0 :(得分:0)

您可以使用pandas.Series.apply来解析主题标签,如下所示:

tweets['hashtags'].apply(lambda x: [d['text'] for d in x])

然后,您需要将输出存储在数据框的新列中。此匿名函数将值作为输入,并遍历列表中的每个字典(如果非空),然后在键:“文本”中创建值的新列表。输出如下:

0                                                  []
1                             [NOJUSTICE, TrumpPence]
2                                                  []
3                                                  []
4                          [CNN, newday, Trump, ISIS]
5                                        [NeverTrump]
6    [Trump2016, TrumpPence16, MakeAmericaGreatAgain]
7                                                  []
8                                                  []
9                                                  []
dtype: object