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



我生成了一个数据帧,其中包含一个名为"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()

它似乎不会将其永久"保存"在数据帧中。 关于我做错了什么的任何指示?

 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

默认情况下,.replace()返回更改的 DF,但它不会就地更改它,因此您必须这样做:

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

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

最新更新