猿问

替换pandas DataFrame中的列值

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


我尝试了以下方法:


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),但无法弄清楚为什么什么也没发生。


任何帮助将不胜感激。


慕娘9325324
浏览 4318回答 4
4回答

慕田峪9158850

如果我理解正确,则您需要以下内容:w['female'] = w['female'].map({'female': 1, 'male': 0})(在这里,我将值转换为数字,而不是包含数字的字符串。如果确实需要,可以将它们转换为"1"和"0",但是我不确定为什么要这样做。)您的代码不工作的原因是因为使用['female']柱(第二'female'你w['female']['female'])并不意味着“选择列其中的值是‘女’”。这意味着选择索引为“女性”的行,而您的DataFrame中可能没有索引。

精慕HU

您可以使用loc编辑数据框的子集:df.loc[<row selection>, <column selection>]在这种情况下:w.loc[w.female != 'female', 'female'] = 0w.loc[w.female == 'female', 'female'] = 1

幕布斯7119047

w.female.replace(to_replace=dict(female=1, male=0), inplace=True)
随时随地看视频慕课网APP

相关分类

Python
我要回答