Je n'ai pas trouvé de questions comme les miennes ...

Btw j'ai un df avec une colonne Year comme ceci:

    2009)
    1998)
    2000)
    1980)
    2002)
    nan
    nan
    nan
    2014)
    1973)
    nan

Je veux couper les parenthèses, mais lorsque j'utilise data['Year'] = data['Year'][:-1] rien ne se passe (pas même les erreurs)

Si j'utilise data['Year'] = data['Year'].apply(lambda x: x[:-1]), ça me donne

TypeError: 'float' object is not subscriptable

Je suppose que le problème réside dans les valeurs "nan", mais comment puis-je résoudre le problème?
Il devrait être correct de convertir nans en 0.

Merci beaucoup

0
Marco Onnis 9 mai 2020 à 12:19

3 réponses

Meilleure réponse

Essayez le remplacement de la chaîne et le remplissage de la chaîne pour supprimer NaNa

df.Year=df.Year.str.replace('[\(\)]','').fillna(0)

enter image description here

2
wwnde 9 mai 2020 à 09:32

Je fais habituellement quelque chose comme ça:

data['Year'] = data['Year'].apply(lambda x: x[:-1] if isinstance(x, str) else '')

Ensuite, vous pouvez indiquer la valeur que vous souhaitez afficher si ce n'est pas une chaîne.

1
Arhiliuc Cristina 9 mai 2020 à 09:23

Pandas implémente une propriété .str pour manipuler des données textuelles.

data['Year'] = data['Year'].str[:-1]
1
Adrien Matissart 9 mai 2020 à 09:27