我正在尝试替换数据框的一列中的值。列(“女性”)仅包含值“女性”和“男性”。我尝试了以下方法: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中可能没有索引。
精慕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
添加回答
举报
0/150
提交
取消