假设我的数据框如下:
df=pd.DataFrame({'a':['A','A','B','C'],'b':[1,2,3,4]})
a b
0 A 1
1 A 2
2 B 3
3 C 4
和一个看起来像这样的字典:
convert={'A':9,'C':8}
如果列a
在convert
个键中有值,则列b
的相应行应更改为dict值。这样输出看起来像:
a b
0 A 9
1 A 9
2 B 3
3 C 8
我正在思考这个问题(不起作用):
pd.np.where(df['a'].isin(convert),convert[df['a']],df['b'])
答案 0 :(得分:2)
您可以将map
与fillna
一起使用;如果密钥存在df.a.map(convert)
,则NaN
将列 a 中的值映射到dict中的相应值,然后使用fillna(df.b)
填充来自列 b'/ EM>:
df['b'] = df.a.map(convert).fillna(df.b)
df
# a b
#0 A 9.0
#1 A 9.0
#2 B 3.0
#3 C 8.0