wor*_*ins 24 python boolean type-conversion series pandas
我有一个名为数据帧df作为
Order Number Status
1 1668 Undelivered
2 19771 Undelivered
3 100032108 Undelivered
4 2229 Delivered
5 00056 Undelivered
Run Code Online (Sandbox Code Playgroud)
我想将Status列转换为布尔值(True当状态已交付且False状态为未交付时),但如果状态既不是'未交付'也不是'已交付',则应将其视为类似NotANumber或类似的内容.
我想用dict
d = {
'Delivered': True,
'Undelivered': False
}
Run Code Online (Sandbox Code Playgroud)
所以我可以轻松添加其他字符串,可以被视为True或False.
jor*_*ris 39
你可以使用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
Run Code Online (Sandbox Code Playgroud)
Yaa*_*ler 15
扩展之前的答案:
d,并用 中的值替换任何找到的键d。d将被设置为NaN。这可以通过fillna()方法来纠正。pd.Series此处的序列化进行操作。d = {'Delivered': True, 'Undelivered': False}
df["Status"].map(d)
Run Code Online (Sandbox Code Playgroud)
dPandas 将在相应的字典中查找每行的值,并尝试用 中的值替换任何找到的键d。d将被保留。pd.Series或pd.DataFrame对象)。d = {'Delivered': True, 'Undelivered': False}
df["Status"].replace(d)
Run Code Online (Sandbox Code Playgroud)
总体而言,替换方法更加稳健,并且可以更好地控制数据映射方式+如何处理缺失值或纳米值。
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
Run Code Online (Sandbox Code Playgroud)
你有你需要的一切。你会很高兴地发现replace:
df.replace(d)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
27389 次 |
| 最近记录: |