Преобразование Pandas строк, содержащих строку в boolean
У меня есть DataFrame с именем df
как
Order Number Status
1 1668 Undelivered
2 19771 Undelivered
3 100032108 Undelivered
4 2229 Delivered
5 00056 Undelivered
Я хотел бы преобразовать столбец Status
в boolean (True
, когда Status is Delivered и False
, когда Status Undelivered)
но если Status не является "Undelivered", то "Delivered" он должен считаться NotANumber
или что-то в этом роде.
Я хотел бы использовать dict
d = {
'Delivered': True,
'Undelivered': False
}
поэтому я мог бы легко добавить другую строку, которая может быть рассмотрена как True
или False
.
Ответы
Ответ 1
Вы можете просто использовать 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
Ответ 2
Пример метода 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
Ответ 3
У вас есть все, что вам нужно. Вы с удовольствием обнаружите replace
:
df.replace(d)