Python 如何将列中的值更改为二进制?
python新手,我被困在这一点上。我的CSV文件包含以下内容: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
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)