J'ai un DataFrame nommé df
as
Order Number Status
1 1668 Undelivered
2 19771 Undelivered
3 100032108 Undelivered
4 2229 Delivered
5 00056 Undelivered
Je voudrais convertir la colonne Status
en booléen (True
lorsque le statut est délivré et False
lorsque le statut n'est pas livré), mais si le statut n'est ni 'Non distribué' ni 'Livré' il doit être considéré comme NotANumber
ou quelque chose comme ça.
Je voudrais utiliser un dict
d = {
'Delivered': True,
'Undelivered': False
}
donc je pourrais facilement ajouter une autre chaîne qui pourrait être considérée comme True
ou False
.
Vous pouvez simplement utiliser map
:
In [7]: df = pd.DataFrame({'Status':['Delivered', 'Delivered', 'Undelivered',
'SomethingElse']})
In [8]: df
Out[8]:
Status
0 Delivered
1 Delivered
2 Undelivered
3 SomethingElse
In [9]: d = {'Delivered': True, 'Undelivered': False}
In [10]: df['Status'].map(d)
Out[10]:
0 True
1 True
2 False
3 NaN
Name: Status, dtype: object
Un exemple de méthode replace
pour remplacer les valeurs uniquement dans la colonne spécifiée C2
et obtenir le résultat sous la forme DataFrame
.
import pandas as pd
df = pd.DataFrame({'C1':['X', 'Y', 'X', 'Y'], 'C2':['Y', 'Y', 'X', 'X']})
C1 C2
0 X Y
1 Y Y
2 X X
3 Y X
df.replace({'C2': {'X': True, 'Y': False}})
C1 C2
0 X False
1 Y False
2 X True
3 Y True
Vous avez tout ce dont vous avez besoin. Vous serez heureux de découvrir replace
:
df.replace(d)