【问题标题】:How to add another column in dataframe with calculated values如何使用计算值在数据框中添加另一列
【发布时间】:2017-12-13 04:37:05
【问题描述】:

我有一个新闻数据集,我在上面进行 NLP。 我现在有 2 个函数,一个计算相似度,另一个计算情绪,它们都从数据框中获取输入,我想做的是在数据框中创建另一列,其中包含计算值,如相似度和情绪(Pos/否定)

功能如下

i=0
for i in range(0, 9):
    text1 = df.description[i]
    text2 = df.title[i]


    vector1 = similarity.text_to_vector(text1)
    vector2 = similarity.text_to_vector(text2)

    token1 = similarity.tokenize(text1)
    token2 = similarity.tokenize(text2)

    jaccard = similarity.jaccard_similarity(token1,token2)
    print ('Jaccard Similarity:', jaccard)

    i=i+1

输出:

('Jaccard Similarity:', 0.07142857142857142)
('Jaccard Similarity:', 0.125)
('Jaccard Similarity:', 0.03225806451612903)
('Jaccard Similarity:', 0.07692307692307693)
('Jaccard Similarity:', 0.2)
('Jaccard Similarity:', 0.07407407407407407)
('Jaccard Similarity:', 0.12)
('Jaccard Similarity:', 0.043478260869565216)
('Jaccard Similarity:', 0.0)

代码:

i=0
for i in range(0, 9):
    blob = TextBlob(df.description[i], analyzer=NaiveBayesAnalyzer())
    y = blob.sentiment.classification
    print ('Result', y)
    i=i+1

输出:

('Result', 'pos')
('Result', 'neg')
('Result', 'pos')
('Result', 'pos')
('Result', 'pos')
('Result', 'neg')
('Result', 'pos')
('Result', 'pos')
('Result', 'neg')

【问题讨论】:

  • 使用您的结果创建列表,然后您可以创建 SeriesDataFrame 并稍后添加到现有的 DataFrame
  • 或使用df["Jaccard Similarity"] = df.apply(your_function)对所有行执行函数并创建列"Jaccard Similarity"
  • 您遇到了什么问题?

标签: python pandas dataframe sentiment-analysis text-analysis


【解决方案1】:

这会解决你的问题

def jaccard(text1,text2):
    vector1 = similarity.text_to_vector(text1)
    vector2 = similarity.text_to_vector(text2)

    token1 = similarity.tokenize(text1)
    token2 = similarity.tokenize(text2)

    jaccard = similarity.jaccard_similarity(token1,token2)
    return jaccard

def result(t1):
    blob = TextBlob(t1, analyzer=NaiveBayesAnalyzer())
    y = blob.sentiment.classification
    return y

df['result'] = df['description'].map(lambda x: result(x))

df['jaccard'] = df.apply(lambda x: lambda x : jaccard(x['description'],x['title']))

【讨论】:

  • jaccard 值以 NaN 形式出现,我该如何解决?
  • 如果没有值,请检查“描述”和“标题”列。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-12
  • 1970-01-01
  • 2021-04-10
  • 1970-01-01
相关资源
最近更新 更多