2015-01-09 6 views
6

でパンダのデータフレーム内のすべての列のすべての値を置き換えるために、私は、次のデータフレームを持っている:どの条件

In [11]: import pandas as pd 

In [12]: mydict = {'foo':[0, 0.3], 'bar':[1,0.55], 'qux': [0.3,4.1]} 

In [13]: df = pd.DataFrame.from_dict(mydict, orient='index') 

In [14]: df 
Out[14]: 
     0  1 
qux 0.3 4.10 
foo 0.0 0.30 
bar 1.0 0.55 

私は何をしたいが0 で1未満のすべての値を交換することです収入:

 0  1 
qux 0  4.10 
foo 0  0 
bar 1.0 0 

どのように達成できますか?

答えて

6

使用ブールインデックス作成をし、条件を渡す:

In [155]: 
df[df<1] = 0 
df 
Out[155]: 
    0 1 
bar 1 0.0 
foo 0 0.0 
qux 0 4.1 

だけブールのインデックスを返しますdf < 1を実行し、ここで何が起こっているかを表示する:

In [156]: 
df < 1 
Out[156]: 
     0  1 
bar False True 
foo True True 
qux True False 

は、この私たちはその後、マスクとしてdfに渡します新しい値をdf[df<1]に割り当てることができます。さらなる例については、docsを参照してください。

+0

これはどのように行うのですか?いいえインプレース? –

+0

@ O.rka私はあなたの質問を理解していない、結果を割り当てない場合は、dfを変更しない – EdChum

+0

多くの関数は元のオブジェクトを変更しないinplace = Falseを持っています。これと同様の方法はありますか? –