通过多个主题标签python组推文

时间:2018-05-14 21:33:46

标签: python pandas twitter pandas-groupby hashtag

我正在尝试在一个基于主题标签的pandas df中将推文组合在一起,这些标签也在一个单独的列中。

SetStackClass()

我创建了一组独特的标签

IdStack

我希望结果是一个数据帧,每个推文按唯一的主题标签和自己的行分组,如果它不包含主题标签。具有多个主题标签的推文将合并到两个字符串中:

import pandas as pd


data = {'tweets':['I #love #dogs','I hate #cats','Missing my #dogs', 'I love sardines in mustard sauce', 'Hello world'],'hashtags':['love dogs','cats','dogs','NaN','NaN']}

df = pd.DataFrame(data, columns = ['tweets', 'hashtags'])
df

1 个答案:

答案 0 :(得分:0)

df3 = pd.DataFrame({"a": df.tweets.str.replace("#","").repeat(df.hashtags.str.split(" ").apply(len)).reset_index().tweets, 
              "b": df.hashtags.str.split(" ").apply(pd.Series).stack().reset_index()[0].replace("NaN", np.nan)})
df4 = pd.concat([df3.groupby("b").a.agg(" ".join).reset_index(), df3[df3.b.isna()]])
df4.columns = ["merged_tweets", "merged_on"]

    merged_tweets                      merged_on
0   I hate cats                        cats
1   I love dogs Missing my dogs        dogs
2   I love dogs                        love
4   I love sardines in mustard sauce   NaN
5   Hello world                        NaN

对不起,如果这很麻烦,请在进入飞机前快速尝试做某事。还有很大的改进空间,但这至少是一个可以启动的工作代码

但我们的想法是创建一个中间数据框(上面df3),这样可以更轻松地将agg" ".join组合在一起。 df3看起来像这样:

    a                                   b
0   I love dogs                         love
1   I love dogs                         dogs
2   I hate cats                         cats
3   Missing my dogs                     dogs
4   I love sardines in mustard sauce    NaN
5   Hello world                         NaN

希望有所帮助