熊猫-替换列值

发布于 2021-01-29 19:25:02

我知道这个问题有很多主题,但是没有一种方法适合我,因此我将发布有关我的具体情况的信息

我有一个看起来像这样的数据框:

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()错误?还是有更好的方法进行条件值替换?

关注者
0
被浏览
37
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    是的,您使用的是错误的,Series.replace()默认情况下不是就地操作,它会返回替换的数据框/系列,您需要将其分配回数据框/系列以使其生效。或者,如果你需要就地做到这一点,你需要指定inplace关键字参数的True例子-

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

    另外,您也可以将上面的参数和arguments一起用于单个replace函数调用中,示例-list``to_replace``value

    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
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看