如何根据之前的类别在熊猫数据框中创建新类别?

时间:2019-11-30 23:04:53

标签: python pandas

我有一个看起来像这样的熊猫数据框:

          Tweets                      negative_keywords positive_keywords neutral_keywords
0   Şanlıurfa'da DAEŞ ile                       []            []             [neutral]
1   Hacettepe Üni. Araştırması                  []            []             [neutral]
2   Kadına şiddetin suç olduğu                [suç]           []                []
3   Suriyeli'lerin fal bakabilme                []            []             [neutral]
4   Hastaneye git Suriyeli. PTT ye          [Plaja]         [kardeşi]           []

通过查看这三个类别的值,我希望有一个类似于以下内容的第四类:

          Tweets                      negative_keywords positive_keywords keyword_category  keyword_category
0   Şanlıurfa'da DAEŞ ile                       []            []             [neutral]       neutral
1   Hacettepe Üni. Araştırması                  []            []             [neutral]       neutral 
2   Kadına şiddetin suç olduğu                [suç]           []                []           negative
3   Suriyeli'lerin fal bakabilme                []            []             [neutral]       neutral
4   Hastaneye git Suriyeli. PTT ye              []         [kardeşi]           []            positive

因此,如果在positive_keywords类别中有一个关键字,我们应该在关键字类别中写[positive]。如果在negative_keywords类别中有一个关键字,我们应该在关键字类别中写[negative]。我也不希望这些词在它们的前面有方括号[]。

1 个答案:

答案 0 :(得分:1)

我要编写一个函数来评估df中的单行,然后使用pandas.DataFrame.apply函数将其应用于每行,同时还要指定新列。

def classify(item):
    if len(item["negative_keywords"]) != "[]":
        return "negative"
    if len(item["positive_keywords"]) != "[]":
        return "positive"
    if len(item["neutral_keywords"]) != "[]":
        return "neutral"
    return 0  # what if none are true? or if multiple are true?

df["keyword_category"] = df.apply(classify, axis=1)