2017-08-30 2 views
2

Durch R, kann ich einfach einen Datenrahmen mit den Frequenzen bestimmter Zeichenfolge Muster aus String-Listen machen.Anzahl Vorkommen von Strings in einem Datenrahmen

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

Als Ergebnis kann ich ein Datenrahmen haben wie diese

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

In Python, ich

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) 
Rest Codes außer sapply()

Was würde davon ausgehen kann ???? sein?

Antwort

4

Sie könnten verwenden 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

Und nur für noch mehr Details, können Sie bauen, dass 'df' oben aus Ihrer' Text' Liste, indem Sie 'df = pd.DataFrame ([[Satz] für Satz im Text], Spalten = ['Text']) ' – Paul

+0

@Paul Es gibt einen einfacheren Weg. ;-) –

+0

Ahh, tatsächlich gibt es! Ich hätte wahrscheinlich daran denken sollen. Danke, dass du es hinzugefügt hast. – Paul

Verwandte Themen