替换 pandas DataFrame 中的列值

新手上路,请多包涵

我正在尝试替换数据框的一列中的值。列(“女性”)仅包含值“女性”和“男性”。

我尝试了以下方法:

 w['female']['female']='1'
w['female']['male']='0'

但收到与之前结果完全相同的副本。

理想情况下,我希望得到一些类似于以下循环元素的输出。

 if w['female'] =='female':
    w['female'] = '1';
else:
    w['female'] = '0';

我查看了陷阱文档 ( http://pandas.pydata.org/pandas-docs/stable/gotchas.html ),但无法弄清楚为什么没有任何反应。

任何帮助将不胜感激。

原文由 Black 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 287
2 个回答

如果我理解正确,你想要这样的东西:

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

(这里我将值转换为数字而不是包含数字的字符串。您可以将它们转换为 "1""0" ,如果你真的想要,但我不确定你为什么想要那个。)

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

原文由 BrenBarn 发布,翻译遵循 CC BY-SA 3.0 许可协议

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

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

在这种情况下:

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

原文由 Jimmy Petersson 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题