2
votes

l'obtenir sur l'objet dataframe 'int' n'a pas d'attribut 'lower'

df23 = pd.DataFrame({'name':['MY NAME1', 'MY NAME2', 'MY NAME3','MY NAME4'],
                    'description': [['d1 d2 d3'], ['d4 d5 d6'], ['d7 d8 d9'],['a9 d0 t5']],
                   'specialties': ['green,red,blue', 'green,purple,pink', 'yellow,white,black,red,green', 'bub.tub,rub'],
                    })
df_work['name'] = [x for x in df_work['name'].map(lambda x: x.lower())]
I want to convert all entries in name col to lower. But i am getting this error.

1 commentaires

qu'est-ce que df_work ? S'agit-il de df23 ? Si c'est le cas, cela fonctionne bien pour moi


3 Réponses :


5
votes

Il semble qu'une valeur soit un entier, il est donc nécessaire de la convertir en string:

df_work['name'] = df_work['name'].astype(str).str.lower()

Une autre solution avec Series.astype et Series.str.lower :

df_work['name'] = [x for x in df_work['name'].map(lambda x: str(x).lower())]


0 commentaires

1
votes

Essayez ceci:

df23 ['name'] = df23 ['name']. astype ('str'). map (lambda x: x.lower ())


0 commentaires

3
votes

Si df_work est un dataframe existant, vous pouvez utiliser:

df_work = pd.DataFrame(df23['name'].apply(lambda x: x.lower()), columns = ['name'])

sinon utiliser:

df_work['name'] = df23['name'].apply(lambda x: x.lower())


0 commentaires