2017-10-10 68 views
0

說我有一個數據幀,看起來像:如果列在字典鍵的值,設爲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']) 

回答

2

您可以使用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 
相關問題