如果列在字典键的值,设为B列到字典值大熊猫数据帧

问题描述:

说我有一个数据帧,看起来像:如果列在字典键的值,设为B列到字典值大熊猫数据帧

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的相应行应更改为字典值。这样,输出将如下所示:

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

您可以使用mapfillna; df.a.map(convert)映射值一个列如果键存在否则NaN,然后使用fillna(df.b)填补从柱失踪值b值在字典的对应值:

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