【问题标题】:Count occurrences of strings in a dataframe计算数据框中字符串的出现次数
【发布时间】:2017-08-30 12:50:03
【问题描述】:

通过R,我可以很容易地从字符串列表中制作一个包含某些字符串模式频率的数据框。

library(stringr)
library(tm)
library(dplyr)    
text = c('i am so hhappy happy now','you look ssad','sad day today','noway')
dat = sapply(c('happy', 'sad'), function(i) str_count(text, i))
dat = data.frame(dat)  
dat = dat %>% mutate(Sentiment = (happy)-(sad))

结果,我可以有这样的数据框

  happy sad Sentiment
1     2   0         2
2     0   1        -1
3     0   1        -1
4     0   0         0

在 Python 中,我可以假设除 sapply() 之外的其余代码

import pandas as pd
text = ['i am so hhappy happy now','you look ssad','sad day today','noway']
????
dat = pd.DataFrame(dat)
dat['Sentiment'] = dat.apply(lambda c: c.happy - c.sad)

???? 会是什么?

【问题讨论】:

    标签: python string pandas dataframe apply


    【解决方案1】:

    你可以使用pd.Series.str.count:

    import pandas as pd
    import numpy as np
    
    text = ['i am so hhappy happy now','you look ssad','sad day today','noway']
    df = pd.DataFrame({'text' : text})
    
    df['happy'] = df.text.str.count('happy')
    df['sad'] = df.text.str.count('sad')
    df['Sentiment'] = df.happy - df.sad
    
    df    
                          text  happy  sad  Sentiment
    0  i am so happy happy now      2    0          2
    1             you look sad      0    1         -1
    2            sad day today      0    1         -1
    3                    noway      0    0          0
    

    【讨论】:

    • 而且,为了更详细的信息,您可以通过 df = pd.DataFrame([[sentence] for sentence in text], columns=['text']) 从您的 text 列表中构造上面的 df
    • @Paul 有一个更简单的方法。 ;-)
    • 啊,确实有!我可能应该想到这一点。感谢您添加它。
    • 很有帮助!!非常感谢!
    猜你喜欢
    • 2021-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多