2017-09-30 3 views
0

ich eine Pandas Reihe von Listen mit Sammlung von Worten in them.I habe versuchen Für zB in jeder Liste Häufigkeit eines bestimmten Wortes zu finden, die Serie istMit Zählung Vorkommen einer Zeichenkette in einer Pandas Serie

0 [All, of, my, kids, have, cried, nonstop, when... 
1 [We, wanted, to, get, something, to, keep, tra... 
2 [My, daughter, had, her, 1st, baby, over, a, y... 
3 [One, of, babys, first, and, favorite, books, ... 
4 [Very, cute, interactive, book, My, son, loves... 

Ich möchte die Kinder in jeder Zeile zählen. Ich habe versucht,

series.count('kids') 

Was mir einen Fehler gibt sagen: 'Stufe Kinder als Namen (None) gleich sein müssen'

series.str.count('kids) 

gibt mir NaN-Werte.

Wie soll ich die Zählimpulse erhalten?

+0

Wenn Ihre Frage beantwortet wurde, bitte [akzeptieren die ein das hat am meisten geholfen] (ht tps: //stackoverflow.com/help/someone-answers). –

Antwort

2

Verwenden

In [5288]: series.apply(lambda x: x.count('kids')) 
Out[5288]: 
0 1 
1 0 
2 0 
3 0 
4 0 
Name: s, dtype: int64 

Einzelheiten

In [5292]: series 
Out[5292]: 
0 [All, of, my, kids, have, cried, nonstop, when] 
1 [We, wanted, to, get, something, to, keep, tra] 
2 [My, daughter, had, her, 1st, baby, over, a, y] 
3  [One, of, babys, first, and, favorite, books] 
4 [Very, cute, interactive, book, My, son, loves] 
Name: s, dtype: object 

In [5293]: type(series) 
Out[5293]: pandas.core.series.Series 

In [5294]: type(series[0]) 
Out[5294]: list 
+0

plus 1 für den Aufwand, diesen Text in eine Liste umzuwandeln. :) – Dark

+0

Ich bin etwas neu zu Python, also bitte bitte mit mir. Ich habe split() für den Text verwendet, der es in eine Liste umgewandelt hat. Ich habe versucht, Lambda vor, aber ich habe diesen Fehler –

+0

Bevor Sie Split haben könnten Sie tatsächlich 'series.str.count ('Kinder')' – Zero

1

Auf dem Original-Serie, verwenden str.findall + str.len:

print(series) 

0  All of my kids have cried nonstop when 
1  We wanted to get something to keep tra 
2  My daughter had her 1st baby over a y 
3  One of babys first and favorite books 
4 Very cute interactive book My son loves 

print(series.str.findall(r'\bkids\b')) 

0 [kids] 
1  [] 
2  [] 
3  [] 
4  [] 
dtype: object 

counts = series.str.findall(r'\bkids\b').str.len() 
print(counts) 

0 1 
1 0 
2 0 
3 0 
4 0 
dtype: int64 
Verwandte Themen