2017-08-30 52 views
2

通過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) 

什麼會????是什麼?

回答

4

你可以使用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 
+0

而且,只是爲了更詳細信息,您可以構造'從'text'列表上方df'做'DF = pd.DataFrame([句子]對於文本中的句子],columns = ['text'])' – Paul

+0

@Paul有一種更簡單的方法。 ;-) –

+0

啊,確實有!我可能應該想到這一點。感謝您添加它。 – Paul

相關問題