在dict中使用python df.replace不会永久更改值

时间:2016-06-06 20:43:28

标签: python pandas dataframe

我生成了一个DataFrame,其中包含一个名为" pred_categories"的列。数值为0,1,2和3.见下文:

         fileids          pred_categories
0  /Saf/DA192069.txt                3
1  /Med/DA000038.txt                2
2  /Med/DA000040.txt                2
3  /Saf/DA191905.txt                3
4  /Med/DA180730.txt                2
我写了一个词:

di = {3: "SAF", 2: "MED", 1: "FAC", 0: "ENV"}

最初有效:

df.replace({'pred_categories': di})
Out[16]: 
          fileids           pred_categories
0   /Saf/DA192069.txt               SAF
1   /Med/DA000038.txt               MED
2   /Med/DA000040.txt               MED
3   /Saf/DA191905.txt               SAF
4   /Med/DA180730.txt               MED
5   /Saf/DA192307.txt               SAF
6   /Env/DA178021.txt               ENV
7   /Fac/DA358334.txt               FAC
8   /Env/DA178049.txt               ENV
9   /Env/DA178020.txt               ENV
10  /Env/DA178031.txt               ENV
11  /Med/DA000050.txt               MED
12  /Med/DA180720.txt               MED
13  /Med/DA000010.txt               MED
14  /Fac/DA358391.txt               FAC

但是在检查时

 df.head()

它似乎永远不会拯救"它在DataFrame中。关于我做错了什么的指示?

 print(df)
          fileids             pred_categories
  0   /Saf/DA192069.txt                3
  1   /Med/DA000038.txt                2
  2   /Med/DA000040.txt                2
  3   /Saf/DA191905.txt                3
  4   /Med/DA180730.txt                2
  5   /Saf/DA192307.txt                3
  6   /Env/DA178021.txt                0
  7   /Fac/DA358334.txt                1
  8   /Env/DA178049.txt                0
  9   /Env/DA178020.txt                0
  10  /Env/DA178031.txt                0
  11  /Med/DA000050.txt                2
  12  /Med/DA180720.txt                2
  13  /Med/DA000010.txt                2
  14  /Fac/DA358391.txt                1

1 个答案:

答案 0 :(得分:3)

默认.replace()返回已更改的DF,但它并未将更改,因此您必须这样做:

df = df.replace({'pred_categories': di})

df.replace({'pred_categories': di}, inplace=True)