Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 替换dataframe中的特定列值_Python_Pandas_Dataframe_Dictionary_Replace - Fatal编程技术网

Python 替换dataframe中的特定列值

Python 替换dataframe中的特定列值,python,pandas,dataframe,dictionary,replace,Python,Pandas,Dataframe,Dictionary,Replace,数据帧看起来像: df = pd.DataFrame({'Tissues':['a1','x2','y3','b','c1','v2','w3'], 'M':[1,2,'a',4,'b','a',7]}) df.set_index('Tissues') 如何将列M中的所有as替换为特定值2,并将所有bs替换为3 我试过: M Tissues a1 1 x2 2 y3 a b 4 c1 b v2 a

数据帧看起来像:

df = pd.DataFrame({'Tissues':['a1','x2','y3','b','c1','v2','w3'], 'M':[1,2,'a',4,'b','a',7]})
df.set_index('Tissues')
如何将列
M
中的所有
a
s替换为特定值2,并将所有
b
s替换为3

我试过:

         M
Tissues   
a1       1
x2       2
y3       a
b        4
c1       b
v2       a
w3       7
,但这将
replace_values
中键以外的其他值更改为
NaN

replace_values = {'a':2, 'b':3}
df['M'] = df['M'].map(replace_values)
我知道我能做到

  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
但是,我是否可以为a、b等有效地执行此操作,而不是逐个执行?

使用:

输出:

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)
使用:

输出:

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)

通过添加
fillna

>>> df
  Tissues  M
0      a1  1
1      x2  2
2      y3  2
3       b  4
4      c1  3
5      v2  2
6      w3  7

通过添加
fillna

>>> df
  Tissues  M
0      a1  1
1      x2  2
2      y3  2
3       b  4
4      c1  3
5      v2  2
6      w3  7

使用
df.替换

df['M'] = df['M'].map(replace_values).fillna(df.M)
df
  Tissues    M
0      a1  1.0
1      x2  2.0
2      y3  2.0
3       b  4.0
4      c1  3.0
5      v2  2.0
6      w3  7.0
结果:

replace_values = {'a':2, 'b':3}
df = df.replace({"M": replace_values})

使用
df.替换

df['M'] = df['M'].map(replace_values).fillna(df.M)
df
  Tissues    M
0      a1  1.0
1      x2  2.0
2      y3  2.0
3       b  4.0
4      c1  3.0
5      v2  2.0
6      w3  7.0
结果:

replace_values = {'a':2, 'b':3}
df = df.replace({"M": replace_values})

您自己的解决方案非常好,只是错过了
fillna
,将最后一行替换为:
df['M']=df['M'].map(替换_值)。fillna(df['M'])
您自己的解决方案非常好,只是错过了
fillna
,将最后一行替换为:
df['M']=df['M'].map(替换_值)。fillna(df['M'])