为了账号安全,请及时绑定邮箱和手机立即绑定

Pandas 检查列值是否等于另一列的名称,然后设置 0 或 1

Pandas 检查列值是否等于另一列的名称,然后设置 0 或 1

慕哥6287543 2023-11-09 21:27:00
这是一个看似简单的问题,但我似乎无法弄清楚。我有一个像这样的数据框如果“animal”中的值为“cat”,我只希望“cat”列的值为 1,对于“animal”列的其他值也类似。这是示例数据集:data = pd.DataFrame({'animal':['cat','cat', 'dog', 'fish'], 'cat':[0,0,0,0],'dog':[0,0,0,0],'fish':[0,0,0,0],'lion':[0,0,0,0]})问题是我不能简单地对值进行二值化,因为即使“lion”不在我的列值中,它仍然作为二进制列存在。(二进制列已定义)。我从另一篇文章中找到了这个,但似乎无法弄清楚它是如何工作的。df.fillna('').apply(lambda x : x.index==x.name).astype(int).replace(0,"")我的实际数据集有大约 100 个二进制列需要循环。任何帮助表示感谢,谢谢!
查看完整描述

2 回答

?
繁花如伊

TA贡献2012条经验 获得超12个赞

我知道答案已经发布,但这是使用您建议的行的方法。


data.loc[:,data.columns != 'animal'].apply(lambda x : data["animal"]==x.name).astype(int)

首先,您首先调用所有不称为“动物”的列,因为您不需要替换它们。然后 lambda 函数遍历每一列,检查名称相同的情况。最后,“astype(int)”确保我们所需的条件为真时,值显示为 1。


要获取带有动物名称的数据框,只需将其保存到变量中,如下所示:


data.loc[:,data.columns != 'animal'] = data.loc[:,data.columns != 'animal'].apply(lambda x : data["animal"]==x.name).astype(int)


Out:

      animal  cat  dog  fish

    0    cat    1    0     0

    1    cat    1    0     0

    2    dog    0    1     0

    3   fish    0    0     1


查看完整回答
反对 回复 2023-11-09
?
largeQ

TA贡献2039条经验 获得超7个赞

您可以使用pd.get_dummies():


data = pd.DataFrame({'animal':['cat','cat', 'dog', 'fish'], 'cat':[0,0,0,0],'dog':[0,0,0,0],'fish':[0,0,0,0]})  

data = pd.get_dummies(data['animal'])

# To keep animal column use: data = data[['animal']].join(pd.get_dummies(data['animal']))

data

Out[1]: 

   cat  dog  fish

0    1    0     0

1    1    0     0

2    0    1     0

3    0    0     1

您还可以循环遍历列并查看该值是否等于该列。返回True或False。然后,只需调用.astype(int)分别变换为 1 和 0 即可。


data = pd.DataFrame({'animal':['cat','cat', 'dog', 'fish'], 'cat':[0,0,0,0],'dog':[0,0,0,0],'fish':[0,0,0,0]})  

for col in data.columns[1:]:

    data[col] = (data['animal'] == col).astype(int)

data

Out[218]: 

  animal  cat  dog  fish

0    cat    1    0     0

1    cat    1    0     0

2    dog    0    1     0

3   fish    0    0     1


查看完整回答
反对 回复 2023-11-09
  • 2 回答
  • 0 关注
  • 64 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信