【发布时间】:2020-04-25 03:31:47
【问题描述】:
df = pd.DataFrame({'Tissues':['a1','x2','y3','b','c1','v2','w3'], 'M':[1,2,'a',4,'b','a',7]})
df.set_index('Tissues')
数据框如下所示:
M
Tissues
a1 1
x2 2
y3 a
b 4
c1 b
v2 a
w3 7
如何将M 列中的所有as 替换为特定值2,并将所有bs 替换为3?
我试过了:
replace_values = {'a':2, 'b':3}
df['M'] = df['M'].map(replace_values)
,但这将不在replace_values 中的键中的其他值更改为NaN:
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
我知道我可以做到
df.loc[(df['M'] == 'a')] = 2
但是我可以对 a、b 等有效地执行此操作,而不是一个一个地执行此操作吗?
【问题讨论】:
-
您自己的解决方案非常好,只是错过了
fillna,将最后一行替换为:df['M'] = df['M'].map(replace_values).fillna(df['M'])
标签: python pandas dataframe dictionary replace