2015-01-09 18 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 

我想要做的是,以取代所有的值是1的0 小於產量:

 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

您如何做到這一點,但沒有t在哪裏? –

+0

@ O.rka我不明白你的問題,如果你不分配結果,那麼不會改變df – EdChum

+0

許多函數有inplace = False,它不會改變原始對象。有沒有類似的方式呢? –