J'ai une trame de données qui se compose de deux colonnes, id et texte.

Je veux récupérer des lignes qui ont une longueur de texte supérieure à 2, par exemple.

La longueur du texte est le nombre de mots dans le texte plutôt que le nombre de caractères.

J'ai fait ce qui suit:

df = pd.DataFrame([{'id': 1, 'text': 'Connected to hgfxg debugger'},
                   {'id': 2, 'text': 'fdss debugger - process 6384 is connecting'},
                   {'id': 3, 'text': 'we are'},
                   ])
df = df[df['text'].str.len() > 2]
print(df) #<-- it will print all the sentences above

Mais cela récupère les phrases qui ont plus de 2 caractères (dans notre cas, toutes les phrases ci-dessus).

Comment puis-je obtenir ce que je veux en une seule ligne de code? possible?

Je peux le faire avec plus d'un, comme:

df['text_len'] = df['text'].map(lambda x: len(str(x).split()))
df = df[df['text_len'] > 2]
print(df) #<-- will print the first two sentences
0
Ghanem 14 mars 2019 à 19:09

2 réponses

Meilleure réponse

Pensez simplement à une autre façon, vous voulez plus de 2 phrases, de sorte que vous avez besoin de deux ' ' dans la chaîne, et ici nous comptons simplement que ' ' est supérieur à 2

df[df['text'].str.count(' ')>2]
Out[230]: 
   id                                        text
0   1                 Connected to hgfxg debugger
1   2  fdss debugger - process 6384 is connecting
2
BENY 14 mars 2019 à 16:12

Vous pouvez également utiliser:

df[df.text.str.split('\s+').str.len().gt(2)]
2
Chris A 14 mars 2019 à 16:20