Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将列中的值更改为二进制?_Python_Python 3.x_Pandas - Fatal编程技术网

Python 如何将列中的值更改为二进制?

Python 如何将列中的值更改为二进制?,python,python-3.x,pandas,Python,Python 3.x,Pandas,python新手,我被困在这一点上。我的CSV文件包含以下内容: Sr,Gender 1,Male 2,Male 3,Female 现在,我想将性别值转换为二进制文件,使文件看起来像: Sr,Gender 1,1 2,1 3,0 因此,我将CSV文件作为数据导入并运行以下代码: data["Gender_new"]=1 data["Gender_new"][data["Gender"]=="Male"]=0 data["Gender_new"]=1=data["Gender_new"].as

python新手,我被困在这一点上。我的CSV文件包含以下内容:

Sr,Gender
1,Male
2,Male
3,Female
现在,我想将性别值转换为二进制文件,使文件看起来像:

Sr,Gender
1,1
2,1
3,0
因此,我将CSV文件作为
数据导入并运行以下代码:

data["Gender_new"]=1
data["Gender_new"][data["Gender"]=="Male"]=0
data["Gender_new"]=1=data["Gender_new"].astype(float)
但是我得到了错误
ValueError:无法将字符串'Male'转换为float:

我做错了什么?我怎样才能使这项工作成功


谢谢

您可以在加载文件时进行转换:

d = pandas.read_csv('yourfile.csv', converters={'Gender': lambda x: int(x == 'Male')})
converters
参数接受一个字典,其键是列名(或索引),该值是为每个项调用的函数。函数必须返回转换后的值

另一种方法是在拥有数据帧后对其进行转换,正如@DJK在他们的评论中指出的:

data['Gender'] = (data['Gender'] == 'Male').astype(int)
试试这个:

import pandas as pd

file = open("your.csv", "r")

data = pd.read_csv(file, sep = ",")

gender = {'male': 1,'female': 0}

data.Gender = [gender[item] for item in data.Gender]
print(data)


data['Gender']=(data['Gender']='Male')。astpye(int)
由于我无法给出答案,下面的代码将是您问题的解决方案:
from sklearn.preprocessing import LabelEncoder le=LabelEncoder()df['Gender\u new']=le.fit\u transform(df['Gender\u new'])
它起作用了。非常感谢。很好,很高兴编码!!
data.Gender[data.Gender == 'male'] = 1
data.Gender[data.Gender == 'female'] = 0
print(data)