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

替换pandas DataFrame中的列值

替换pandas DataFrame中的列值

慕娘9325324 2019-10-06 10:53:43
我正在尝试替换数据框的一列中的值。列(“女性”)仅包含值“女性”和“男性”。我尝试了以下方法:w['female']['female']='1'w['female']['male']='0' 但是会收到与先前结果完全相同的副本。理想情况下,我希望得到一些类似于下面的循环元素的输出。if w['female'] =='female':    w['female'] = '1';else:    w['female'] = '0';我浏览了gotchas文档(http://pandas.pydata.org/pandas-docs/stable/gotchas.html),但无法弄清楚为什么什么也没发生。任何帮助将不胜感激。
查看完整描述

4 回答

?
慕田峪9158850

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

如果我理解正确,则您需要以下内容:


w['female'] = w['female'].map({'female': 1, 'male': 0})

(在这里,我将值转换为数字,而不是包含数字的字符串。如果确实需要,可以将它们转换为"1"和"0",但是我不确定为什么要这样做。)


您的代码不工作的原因是因为使用['female']柱(第二'female'你w['female']['female'])并不意味着“选择列其中的值是‘女’”。这意味着选择索引为“女性”的行,而您的DataFrame中可能没有索引。


查看完整回答
反对 回复 2019-10-06
?
精慕HU

TA贡献1845条经验 获得超8个赞

您可以使用loc编辑数据框的子集:


df.loc[<row selection>, <column selection>]

在这种情况下:


w.loc[w.female != 'female', 'female'] = 0

w.loc[w.female == 'female', 'female'] = 1


查看完整回答
反对 回复 2019-10-06
?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

w.female.replace(to_replace=dict(female=1, male=0), inplace=True)


查看完整回答
反对 回复 2019-10-06
  • 4 回答
  • 0 关注
  • 4317 浏览
慕课专栏
更多

添加回答

举报

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