web-dev-qa-db-fra.com

utilisation de len () dans le cadre de données Pandas

Voici le look de ma DataFrame:

 StateAb GivenNm Nom de famille PartyNm PartyAb EluOrdre 
 35 WA Joe BULLOCK Parti travailliste australien ALP 2 
 36 WA Michaelia CASH LP libéral 3 
 37 WA Linda REYNOLDS Libéral LP 4 
 38 WA Wayne DROPULICH Parti des sports australien SPRT 5 
 39 WA Scott LUDLAM Les Verts (WA) GRN 6 

et je veux énumérer une liste de sénateurs dont le nom de famille est plus de 9 caractères.

Donc, je pense que le code devrait être comme ça:

df[len(df.Surname) >9]

mais cela soulève une KeyError, où est-ce que je me suis trompé?

6
Dong

La manière correcte de filtrer un DataFrame en fonction de la longueur des chaînes d'une colonne est 

df[df['Surname'].str.len() > 9]

df['Surname'].str.len() crée une série de longueurs pour la colonne du nom de famille et df[df['Surname'].str.len() > 9] filtre les valeurs inférieures ou égales à 9. Ce que vous avez fait est de vérifier la longueur de la série elle-même (son nombre de lignes). 

16
ayhan

Jetez un coup d’œil à la fonction filter de python. Il fait exactement ce que tu veux.

df = [
    {"Surname": "Bullock-ish"},
    {"Surname": "Cash"},
    {"Surname": "Reynolds"},
]
longnames = list(filter(lambda s: len(s["Surname"]) > 9, df))
print(longnames)

>>[{'Surname': 'Bullock-ish'}]

Sytse

0
Sytse Reitsma