Преобразование серии Pandas, содержащей строку в boolean

У меня есть DataFrame с именем df as

  Order Number Status 1 1668 Undelivered 2 19771 Undelivered 3 100032108 Undelivered 4 2229 Delivered 5 00056 Undelivered 

Я хотел бы преобразовать столбец Status в boolean ( True когда Status Delivered и False когда Status Undelivered), но если Status не является ни «Undelivered», ни «Delivered», его следует рассматривать как NotANumber или что-то в этом роде.

Я хотел бы использовать dict

 d = { 'Delivered': True, 'Undelivered': False } 

поэтому я мог бы легко добавить другую строку, которая может считаться True или False .

3 Solutions collect form web for “Преобразование серии Pandas, содержащей строку в boolean”

Вы можете просто использовать 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 типа DataFrame .

 import pandas as pd df = pd.DataFrame({'C1':['X', 'Y', 'X', 'Y'], 'C2':['Y', 'Y', 'X', 'X']}) C1 C2 0 XY 1 YY 2 XX 3 YX 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) 
  • Принудительное преобразование нечисловых массивов numpy с заменой NAN
  • Возвращает массив UUID PosgreSQL в виде списка с psycopg2
  • Как преобразовать типы возвратов neo4j в типы python
  • Как преобразовать булевой массив в массив int
  •  
    Interesting Posts for Van-Lav
    Python - лучший язык программирования в мире.