【问题标题】:How to change values in a column into binary? [duplicate]如何将列中的值更改为二进制? [复制]
【发布时间】:2018-12-03 14:26:21
【问题描述】:

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

Sr,Gender
1,Male
2,Male
3,Female

现在我想将 Gender 值转换为二进制文件,因此文件看起来像:

Sr,Gender
1,1
2,1
3,0

所以,我将 CSV 文件导入为 data 并运行以下代码:

data["Gender_new"]=1
data["Gender_new"][data["Gender"]=="Male"]=0
data["Gender_new"]=1=data["Gender_new"].astype(float)

但我收到了错误ValueError: could not convert string 'Male' to float:

我做错了什么,我怎样才能做到这一点?

谢谢

【问题讨论】:

  • data[‘Gender’] = (data[‘Gender’] ==‘Male’).astpye(int)
  • 由于我无法给出答案,下面的代码可以解决您的问题:from sklearn.preprocessing import LabelEncoder le = LabelEncoder() df['Gender_new'] = le.fit_transform(df['Gender_new'])

标签: python python-3.x pandas


【解决方案1】:

试试这个:

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'] = 1
data.Gender[data.Gender == 'female'] = 0
print(data)

【讨论】:

  • 成功了。非常感谢。
  • 编码愉快!!
【解决方案2】:

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

d = pandas.read_csv('yourfile.csv', converters={'Gender': lambda x: int(x == 'Male')})

converters 参数采用一个字典,其键是列名(或索引),值是为每个项目调用的函数。该函数必须返回转换后的值。

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

data['Gender'] = (data['Gender'] == 'Male').astype(int)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-29
    • 2021-07-20
    • 2019-01-28
    • 2013-09-15
    • 1970-01-01
    • 2021-12-22
    • 2018-01-02
    相关资源
    最近更新 更多