提问人:kzs 提问时间:10/24/2023 最后编辑:desertnautkzs 更新时间:10/25/2023 访问量:41
应用二进制映射会在数据集的某些列中提供 NaN
Applying binary map gives NaN in some columns of the dataset
问:
我有一个名为 Housing 的数据集,在某些列中有一些字符串值,如下所示:
我需要将这些“是”或“否”值转换为 0 或 1。为此,我使用以下代码片段:
varlist = ['mainroad', 'guestroom', 'basement', 'hotwaterheating', 'airconditioning', 'prefarea']
# Defining the map function
def binary_map(x):
return x.map({"yes": 1, "no": 0})
# Applying the function to the housing list
housing[varlist] = housing[varlist].apply(binary_map)
housing.head()
但是,我没有将 1 或 0 作为条目,而是在这些列中获得 NaN:
有人能说出这里的错误是什么吗?
答:
1赞
Ömer Sezer
10/24/2023
#1
很奇怪,你的代码正在工作。如果您从文件中读取 DF,或将其写入文件,则可能是个问题。
我只随机生成 DF,以下代码正在工作。请在另一个文件上运行它。也许它可以帮助您找到问题所在。
法典:
import pandas as pd
import random
varlist = ['mainroad', 'guestroom', 'basement', 'hotwaterheating', 'airconditioning', 'prefarea']
data = {col: [random.choice(["yes", "no"]) for _ in range(5)] for col in varlist}
housing = pd.DataFrame(data)
print(housing)
def binary_map(x):
return x.map({"yes": 1, "no": 0})
housing[varlist] = housing[varlist].apply(binary_map)
housing.head()
print(housing)
输出:
mainroad guestroom basement hotwaterheating airconditioning prefarea
0 yes no yes no no yes
1 yes yes yes no no yes
2 no no yes yes yes yes
3 yes no yes no yes no
4 yes yes no yes no no
mainroad guestroom basement hotwaterheating airconditioning prefarea
0 1 0 1 0 0 1
1 1 1 1 0 0 1
2 0 0 1 1 1 1
3 1 0 1 0 1 0
4 1 1 0 1 0 0
评论