如果dict键中的列A值,则将列B设置为pandas dataframe中的dict值

时间:2017-10-10 20:54:41

标签: python pandas

假设我的数据框如下:

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}

如果列aconvert个键中有值,则列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'])

1 个答案:

答案 0 :(得分:2)

您可以将mapfillna一起使用;如果密钥存在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