2017-10-10 13 views
0

でdictの値に列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の対応する行を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']) 

答えて

2

あなたはfillnamapを使用することができます。カラムdf.a.map(convert)マップ値辞書に対応する値にをキーが他NaNが存在する場合は、カラムBの値で欠損値を埋めるためにfillna(df.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 
関連する問題