web-dev-qa-db-fra.com

Application de majuscules à une colonne de pandas dataframe

Je ne parviens pas à appliquer les majuscules à une colonne de mon DataFrame.

le cadre de données est df.

1/2 ID est la tête de colonne qui doit appliquer UPPERCASE.

Le problème est que les valeurs sont composées de trois lettres et de trois chiffres. Par exemple rrr123 est l'une des valeurs.

df['1/2 ID'] = map(str.upper, df['1/2 ID'])

J'ai une erreur:

TypeError: descriptor 'upper' requires a 'str' object but received a 'unicode' error.

Comment appliquer la majuscule aux trois premières lettres de la colonne du DataFrame df?

25
Gil5Ryan

Cela devrait fonctionner:

df['1/2 ID'] = map(lambda x: str(x).upper(), df['1/2 ID'])

et si vous voulez que tous les noms columns soient en format majuscule:

df.columns = map(lambda x: str(x).upper(), df.columns)
22
Di Zou

Si votre version de pandas est une version récente, vous pouvez simplement utiliser la méthode de la chaîne vectorisée upper :

df['1/2 ID'] = df['1/2 ID'].str.upper()

Cette méthode ne fonctionnant pas sur place, le résultat doit être attribué à nouveau.

56
EdChum

str.upper() veut une vieille chaîne Python 2 chaîne

unicode.upper() voudra un unicode et non une chaîne (ou vous obtenez TypeError: le descripteur 'upper' nécessite un objet 'unicode' mais reçoit un 'str')

Je suggérerais donc de faire appel à la saisie au canard et d’appeler .upper() sur chacun de vos éléments, par exemple.

df['1/2 ID'].apply(lambda x: x.upper(), inplace=True)
6
bakkal