Преобразование Pandas строк, содержащих строку в boolean - программирование
Подтвердить что ты не робот

Преобразование 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.

4b9b3361

Ответ 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)