替换熊猫数据框中的特定列值

DPd*_*Pdl 2 python dictionary replace dataframe pandas

df = pd.DataFrame({'Tissues':['a1','x2','y3','b','c1','v2','w3'], 'M':[1,2,'a',4,'b','a',7]})
df.set_index('Tissues')
Run Code Online (Sandbox Code Playgroud)

数据框看起来像:

         M
Tissues   
a1       1
x2       2
y3       a
b        4
c1       b
v2       a
w3       7
Run Code Online (Sandbox Code Playgroud)

如何将a列中的所有s替换M为特定值,2 以及所有bs 到 3?

我试过:

replace_values = {'a':2, 'b':3}
df['M'] = df['M'].map(replace_values)
Run Code Online (Sandbox Code Playgroud)

,但这将不在键中的其他值更改replace_valuesNaN

  Tissues    M
0      a1  NaN
1      x2  NaN
2      y3  2.0
3       b  NaN
4      c1  3.0
5      v2  2.0
6      w3  NaN
Run Code Online (Sandbox Code Playgroud)

我明白我可以做到

df.loc[(df['M'] == 'a')] = 2
Run Code Online (Sandbox Code Playgroud)

但是我可以对 a、b 等有效地执行此操作,而不是一个一个地执行此操作吗?

CDJ*_*DJB 5

使用df.replace

df = pd.DataFrame({'Tissues':['a1','x2','y3','b','c1','v2','w3'], 'M':[1,2,'a',4,'b','a',7]})
df.set_index('Tissues')

replace_values = {'a':2, 'b':3}

df['M'] = df['M'].replace(replace_values)
Run Code Online (Sandbox Code Playgroud)

输出:

>>> df
  Tissues  M
0      a1  1
1      x2  2
2      y3  2
3       b  4
4      c1  3
5      v2  2
6      w3  7
Run Code Online (Sandbox Code Playgroud)