python - 将 python df.replace 与 dict 一起使用不会永久更改值

标签 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

最佳答案

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

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

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

关于python - 将 python df.replace 与 dict 一起使用不会永久更改值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37666575/

相关文章:

python - Py.test fixture : Use function fixture in scope fixture

python - 如何将 pandas periodIndex 转换为特定的财政年度字符串格式?

python - 使用 pandas 数据框以不同颜色绘制多条线

python - Django:如何将上下文提供给 FormView get() 方法(也使用请求参数)

python - 验证记录在 Python/PyTables 中唯一性的有效方法

python - 如何将 numpy 矩阵添加为 pandas 数据框的新列?

scala - 从 spark DataFrame 中提取 `Seq[(String,String,String)]`

python - 当数据点为 float 据类型时,如何将列与最近的数据点合并?

python - 如何使用这种结构在 Python 中进行相对导入?

python - 使用 SQL Server 中的 sqlalchemy 将表读入 pandas