2017-10-02 7 views
1

私はデータフレームpdを持っています。私はそれが閾値保持の上か下であるかに応じて列irrの値を変更したいと思います。パンダ:DataFrameの値を設定するための三項条件演算子

これを1行で行うにはどうすればよいですか?今私はもちろんの問題は、私はirrを変更し、次の行に再びそれをチェックすることである

pd['irr'] = pd['irr'][pd['cs']*0.63 > pd['irr']] = 1.0 
pd['irr'] = pd['irr'][pd['cs']*0.63 <= pd['irr']] = 0.0 

を持っています。

パンダ用の3値条件演算子がありますか?

答えて

1

パンダではない、numpyではい。

あなたはnumpy.whereを使用することができますかboolean Seriesfloatに条件が作成した変換 - True S 1.0False sが0.0されている。

pd['irr'] = np.where(pd['cs']*0.63 > pd['irr'], 1.0, 0.0) 

または:

pd['irr'] = (pd['cs']*0.63 > pd['irr']).astype(float) 

サンプル:

pd = pd.DataFrame({'cs':[1,2,5], 
        'irr':[0,100,0.04]}) 

print (pd) 
    cs  irr 
0 1 0.00 
1 2 100.00 
2 5 0.04 

pd['irr'] = (pd['cs']*0.63 > pd['irr']).astype(float) 
print (pd) 
    cs irr 
0 1 1.0 
1 2 0.0 
2 5 1.0