将包含字符串的Pandas系列转换为布尔值

2024-09-27 04:21:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个名为df的数据帧

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

我想将Status列转换为布尔值(True状态为已传递,而False状态为未传递) 但如果状态既不是“未送达”,也不是“已送达”,则应将其视为NotANumber或类似的状态。

我想用听写

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

所以我可以很容易地添加其他字符串,可以看作是TrueFalse


Tags: 数据字符串falsetruenumberdf状态status
3条回答

一个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

你有你需要的一切。你会很高兴发现^{}

df.replace(d)

您可以使用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

相关问题 更多 >

    热门问题