df.replace调用不会对原始数据帧进行更改

时间:2017-08-31 20:56:52

标签: python pandas dataframe replace

使用pd.DataFrame.replace时,我一直试图找出为什么当我替换另一列中的另一个集时,我替换的值会恢复为原始值。你怎么能在下面永久地替换?

titanic.replace({'Pclass' : 
                {3 : 'Lower Class', 
                 2 : 'Middle Class', 
                 1: 'Upper Class'}})

3 个答案:

答案 0 :(得分:3)

阅读df.replace文档:

DataFrame.replace(to_replace=None, value=None, inplace=False, 
                       limit=None, regex=False, method='pad', axis=None)
     

to_replace中的值替换为value

  

返回:filledNDFrame

除非您将其指定为原地操作,否则这不是就地操作。

titanic.replace({'Survived':(0:'False',1:'True')}, inplace=True)

或者,返回返回值。

titanic = titanic.replace({'Survived':(0:'False',1:'True')})

请勿尝试在inplace=True时分配,因为df.replace会返回None

答案 1 :(得分:2)

添加inplace = True

titanic.replace({'Survived':(0:'False',1:'True')},inplace =True)

对于摇摇欲坠的泰坦尼克号数据,建议map

d={0:'False',1:'True'}

titanic.Survived=titanic.Survived.map(d)

答案 2 :(得分:0)

代码titanic.replace(...)创建 new DataFrame,然后返回。为了让Python记住这个DataFrame而不仅仅是摆脱它,你需要用df = titatic.replace(...)将它分配给某个东西。此处df可以是任何名称,包括 titanic;如果你使用相同的名字,它将摆脱 DataFrame并从那时起使用新的。