Pandas replace indexes of rows according to a dictionary

ssh*_*270 1 python dictionary dataframe pandas

我有一个名为 df 的 Pandas 数据框:

             1   2   3   4   5   6   7   8   9   10
dog   jumps   1   1   1   1   1   1   0   1   1   1
      fox     1   1   1   1   1   1   0   0   1   1
      the     1   1   1   1   1   1   1   0   1   1
      dog     1   1   1   1   1   1   0   0   1   1
      over    1   1   1   1   1   1   0   0   1   1
fox   jumps   1   1   1   1   1   1   0   1   1   1
      fox     1   1   1   1   1   1   0   0   1   1
      the     1   1   1   1   1   1   1   0   1   1
      dog     1   1   1   1   1   1   0   0   1   1
      over    1   1   1   1   1   1   0   0   1   1
jumps jumps   1   1   1   1   1   1   0   0   1   0
      fox     1   1   1   1   1   1   1   0   1   0
      the     1   0   1   1   1   1   0   0   1   0
      dog     1   1   1   1   1   1   1   0   1   0
      over    1   0   1   1   1   0   0   1   1   0
over  jumps   1   1   0   1   0   1   1   0   1   0
      fox     1   1   1   1   1   1   0   0   1   0
      the     1   0   1   1   1   0   0   1   1   0
      dog     1   1   1   1   1   1   0   0   1   0
      over    1   1   1   1   1   1   0   0   1   0
the   jumps   1   1   0   1   1   1   0   0   1   0
      fox     1   1   1   1   1   1   0   1   1   0
      the     1   1   1   1   1   1   0   0   1   0
      dog     1   1   1   1   1   1   0   1   1   0
      over    1   1   0   1   0   1   1   0   1   0
Run Code Online (Sandbox Code Playgroud)

我有以下字典:

dic = {'dog': 1, 'fox': 1, 'the': 2, 'over': 2, 'jumps': 0}
Run Code Online (Sandbox Code Playgroud)

我想用它们各自的 dic 值替换索引的值。

我尝试了以下方法:

df.index.levels[0][0] = 'integer value'
Run Code Online (Sandbox Code Playgroud)

但这不起作用,它给了我错误:

类型错误:索引不支持可变操作

另外,熊猫重命名功能也不能正常工作

关于如何以最有效和最干净的方式做到这一点的任何想法。任何建议将不胜感激。

WeN*_*Ben 6

我觉得rename还是工作

df.rename(index=dic)
Out[1311]: 
     1  2  3  4  5  6  7  8  9  10                               
1 0  1  1  1  1  1  1  0  1  1   1
  1  1  1  1  1  1  1  0  0  1   1
  2  1  1  1  1  1  1  1  0  1   1
  1  1  1  1  1  1  1  0  0  1   1
  2  1  1  1  1  1  1  0  0  1   1
  0  1  1  1  1  1  1  0  1  1   1
  1  1  1  1  1  1  1  0  0  1   1
  2  1  1  1  1  1  1  1  0  1   1
  1  1  1  1  1  1  1  0  0  1   1
  2  1  1  1  1  1  1  0  0  1   1
Run Code Online (Sandbox Code Playgroud)