I have a DataFrame named df
as
Order Number Status
1 1668 Undelivered
2 19771 Undelivered
3 100032108 Undelivered
4 2229 Delivered
5 00056 Undelivered
I would like to convert the Status
column to boolean (True
when Status is Delivered and False
when Status is Undelivered)
but if Status is neither 'Undelivered' neither 'Delivered' it should be considered as NotANumber
or something like that.
I would like to use a dict
d = {
'Delivered': True,
'Undelivered': False
}
so I could easily add other string which could be either considered as True
or False
.
You can just use 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
An example of replace
method to replace values only in the specified column C2
and get result as DataFrame
type.
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
You've got everything you need. You'll be happy to discover replace
:
df.replace(d)
来源:https://stackoverflow.com/questions/17702272/convert-pandas-series-containing-string-to-boolean