df
という名前のDataFrameがあります。
Order Number Status
1 1668 Undelivered
2 19771 Undelivered
3 100032108 Undelivered
4 2229 Delivered
5 00056 Undelivered
Status
列をブール値に変換したいのですが(StatusがDeliveredの場合はTrue
、StatusがUndeliveredの場合はFalse
)、Statusが「Undelivered」でも「Delivered」でもない場合NotANumber
またはそのようなものと見なす必要があります。
辞書を使いたい
d = {
'Delivered': True,
'Undelivered': False
}
そのため、True
またはFalse
と見なすことができる他の文字列を簡単に追加できます。
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
指定した列の値のみを置き換えるreplace
メソッドの例C2
および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
必要なものがすべて揃っています。あなたは喜んで発見します replace
:
df.replace(d)