微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – Pandas – 替换列值

我知道这个问题有很多主题,但没有一种方法适合我,所以我发布了我的具体情况

我有一个如下所示的数据框:

data = pd.DataFrame([[1,0],[0,1],[1,0],[0,1]], columns=["sex", "split"])
data['sex'].replace(0, 'Female')
data['sex'].replace(1, 'Male')
data

我想要做的是将性别列中的所有0替换为“女性”,将所有1替换为“男性”,但是当我使用上面的代码时,数据框中的值似乎没有改变

我是否错误地使用了replace()?或者有更好的方法来有条件地替换价值观吗?

解决方法:

是的,您使用不正确,认情况下Series.replace()不是就地操作,它返回替换的数据框/系列,您需要将其分配回dataFrame / Series以实现其效果.或者,如果您需要在原地进行,则需要将inplace关键字参数指定为True示例 –

data['sex'].replace(0, 'Female',inplace=True)
data['sex'].replace(1, 'Male',inplace=True)

此外,您可以通过使用to_replace参数和值参数的列表将上述内容组合到单个替换函数调用中,示例 –

data['sex'].replace([0,1],['Female','Male'],inplace=True)

示例/演示 –

In [10]: data = pd.DataFrame([[1,0],[0,1],[1,0],[0,1]], columns=["sex", "split"])

In [11]: data['sex'].replace([0,1],['Female','Male'],inplace=True)

In [12]: data
Out[12]:
      sex  split
0    Male      0
1  Female      1
2    Male      0
3  Female      1

你也可以使用字典,例子 –

In [15]: data = pd.DataFrame([[1,0],[0,1],[1,0],[0,1]], columns=["sex", "split"])

In [16]: data['sex'].replace({0:'Female',1:'Male'},inplace=True)

In [17]: data
Out[17]:
      sex  split
0    Male      0
1  Female      1
2    Male      0
3  Female      1

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐