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
?
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)
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.
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)