2017-07-06 3 views
2

パイソン/パンダ細胞に依存し、各行の値を代入する方法は、私はこのようなデータフレーム持って

d = {'AA': 1, 'BB': 2, 'CC': 3} 

を私はそれぞれの値を比較しますセルを辞書からの値で置き換えて、各行のこれらの値の合計で別の新しい列を追加します。結果で私はこのようなものが必要です:

x y z sum 
0 AA BB CC 6 
1 BB NaN CC 5 
2 BB AA NaN 3 

私は最も効率的な解決策、アイデアが必要ですか? axis=1によって行当たりsum

答えて

4

使用replace、最後astypeによりintに変換:

print (df.replace(d)) 
    x y z 
0 1 2.0 3.0 
1 2 NaN 3.0 
2 2 1.0 NaN 

df['sum'] = df.replace(d).sum(axis=1).astype(int) 
print (df) 
    x y z sum 
0 AA BB CC 6 
1 BB NaN CC 5 
2 BB AA NaN 3 
+0

最初の部分は動作しますが、私は結果の値を合計したいとき、私はそれぞれの行の0を持っています。私は間違って何をしていますか? – bartblons

+0

Hmmmなので、 'print(df.replace(d))'は数値を使って 'DataFrame'を返しますか? 'print(df.replace(d).dtypes)'とは何ですか? – jezrael

+0

また、 'print(df.replace(d).sum(axis = 1))'を返すものは - すべての値は0か浮動小数点数ですか? – jezrael

関連する問題