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'])