Pandas - 创建具有替换值的新列,同时保留原始列

Pandas - create new column with replaced values while keeping original column

我是 python 的新手,所以请多多包涵。我有一个数据框,我想在其中替换特定字符串的值。下面是我的起始 df (df_train):

       A    B     C     D
0     .5   Ex    Ex    Po
1     35   Gd    TA    Gd
2     52   TA    Fa    Ex
3     47   Bd    Po    Gd

我可以轻松替换我想要的值并创建一个新的 df(df_train_scaled),如下所示:

df_train_scaled = df_train.replace(['Ex','Gd','TA','Fa','Po'], [5, 4, 3, 2, 1])

我很好奇我是否应该这样做并转到一个新的 df(df_train_scaled) 以在建模之前继续数据预处理,或者我是否应该在同一个 df ( df_train)。不管答案如何,我都想弄清楚如何使用替换值将新列添加到同一个 df。输出如下:

       A    B   B_new  C   C_new   D   D_new
0     .5   Ex     5    Ex     5    Po    1
1     35   Gd     4    TA     3    Gd    4
2     52   TA     3    Fa     2    Ex    5
3     47   Gd     4    Po     1    Gd    4

如果我这样做,我可以尝试看看我的序数或缩放变量是否会在我的建模工作中表现更好。在此先感谢您的帮助!

您可以简单地将两个表附加在一起:

df_train_scaled = df_train.iloc[:,1:].replace(['Ex','Gd','TA','Fa','Po'], [5, 4, 3, 2, 1])
df_train_scaled.columns = [x + "_new" for x in df_train_scaled.columns]
pd.concat([df_train, df_train_scaled], axis=1)

replace + concat

d=dict(zip(['Ex','Gd','TA','Fa','Po'], [5, 4, 3, 2, 1]))
df.replace(d)
Out[848]: 
      A   B  C  D
0   0.5   5  5  1
1  35.0   4  3  4
2  52.0   3  2  5
3  47.0  Bd  1  4
pd.concat([df,df.iloc[:,1:].replace(d).add_suffix('_New')],1).sort_index(1)
Out[849]: 
      A     B B_New   C  C_New   D  D_New
0   0.5     Ex     5  Ex      5  Po      1
1  35.0     Gd     4  TA      3  Gd      4
2  52.0     TA     3  Fa      2  Ex      5
3  47.0     Bd    Bd  Po      1  Gd      4