2017-09-15 3 views
0

Comment compter combien de fois un mot apparaît dans une chaîne sur une colonne avec Python? Par exemple:Comment compter combien de fois un mot apparaît dans une colonne, python

file|context 
----|------- 
1 | Hello world 
2 | Round and round 

Je veux calculer l'occurrence des mots:

file| context   | word_count 
----|-----------------|--------------------- 
1 | Hello world  | {'hello':1,'world':1} 
2 | Round and round | {'round':2,'and':1} 

Je suis coincé là-dessus pendant toute la journée et essayé d'utiliser value_counts() et contre. Je n'arrive toujours pas à le comprendre. De l'aide?

Merci!

+0

Comment avez-vous essayé d'utiliser Counter et value_counts()? –

+0

Quel type de structure de données montrez-vous? Vous obtiendrez des réponses très différentes si vous parlez d'analyser une table de texte plutôt que de travailler sur quelque chose comme un cadre de données «pandas». Ajouter des balises appropriées, peut-être ('string' et' count' sont assez inutiles ici). – Blckknght

Répondre

2

Vous pouvez utiliser un collections.Counter sur une version minuscule de la chaîne divisée:

from collections import Counter 

s = 'Round and round' 
counts = Counter(s.lower().split()) 
print(dict(counts)) 

Sortie:

 
{'and': 1, 'round': 2} 

Ensuite, vous devez adapter ce pour travailler avec vos données. Le format de données semble utiliser des champs de largeur fixe, de sorte que la colonne de contexte commence à la position 7. En supposant que les données proviennent d'un fichier:

with open('data') as f: 
    next(f) # skip the header 
    next(f) # skip the border 
    # print new header and border 

    for line in f: 
     counts = Counter(line[6:].lower().split()) 
     print('{} | {}'.format(line, dict(counts))) 

Il y a du travail à faire pour formater correctement les comptes dans la colonne de sortie.

+0

Merci pour l'info. Ça a beaucoup aidé! – Lily

0

Ci-dessous on donne le nombre de nombre de fois mot apparaît dans la chaîne

str = "Round and round" 
dict1={} 
for eachStr in str.split(): 
    if eachStr.lower() in dict1.keys(): 
     count = dict1[eachStr] 
     count = count + 1 
     dict1[eachStr.lower()] = count 
    else: 
     dict1[eachStr.lower()] = 1 
print dict1 

SORTIE:

{'and': 1, 'round': 2} 
0

Vous pouvez utiliser python en fonction build Counter à cet effet.

In [5]: from collections import Counter 

In [6]: string = 'Hello world' 

In [9]: count = Counter(string.lower().split()) 

In [10]: print(dict(count)) 
{'world': 1, 'hello': 1} 

Convertir les mots en lowercase parce Counter considèrent les majuscules et les minuscules différemment.

+1

Nous vous remercions de votre aide! – Lily