python - Pandas 用 nan 替换所有列值
问题描述
我有一个 pandas 数据框,其中包含一个由 3 个对象值填充的列:“true”、“false”和“---”
我想用 0 替换“真”值,用 1 替换“假”值,所以我写了以下内容
df['True/False'] = df['True/False'].str.replace('False' '1')
df['True/False'] = df['True/False'].str.replace('True', '0')
所以,我希望输入在我['False','True','False','False','False','---']
返回[1,0,1,1,1,'---']
时返回print(df['True/False'])
。
但相反,我得到:
["NaN","NaN","NaN","NaN","NaN","NaN"]
一点帮助?
解决方案
而不是df.replace
,您应该使用它,Series.map
因为它更快:
创建一个dict
要替换的值:
In [3590]: d = {'True': 0, 'False': 1}
考虑df
:
In [3592]: df = pd.DataFrame(['False','True','False','False','False','---'], columns=['A'])
In [3593]: df
Out[3593]:
A
0 False
1 True
2 False
3 False
4 False
5 ---
In [3597]: df.A = df.A.map(d).fillna(df.A)
In [3598]: df
Out[3598]:
A
0 1
1 0
2 1
3 1
4 1
5 ---
推荐阅读
- c# - 如何向多个收件人发送电子邮件
- node.js - 错误:连接 ECONNREFUSED 127.0.0.1:3100
- python - openpyxl 超链接 for 循环
- python - 更优雅的方式来做到这一点?python 2、3或4的倍数
- html - 类后面的图像没有正确对齐
- java - 如何使用 java 解决 selenium 中的此错误
- asp.net-web-api - 在 Web api 中生成 pdf (ItextSharp 5.5.13)
- java - 弹性搜索:根据源中的 _field 获取所有文档 id 并使用新数据更新 _field
- python - 为什么我不能使用 scrapy 选择亚马逊页面中的某些元素?
- java - 递归查找 SORTED 数组中第一次出现的数字