2015-10-06 82 views
0

我試圖執行以下操作:在數據框X上,我想選擇所有行,其中X['a']>0但我想保留X的尺寸,以便任何其他行將顯示爲包含NaN。有沒有一個快速的方法來做到這一點?如果其中一個是X[X['a']>0],則不保留X的尺寸。基於列選擇行並在數據框中保留尺寸

+0

'X.loc [X ['a']> 0] = pd.np.nan'的作品,我猜? – Zero

回答

1

使用雙標[[]]

In [42]: 
df = pd.DataFrame({'a':np.random.randn(10)}) 
df 

Out[42]: 
      a 
0 1.042971 
1 0.978914 
2 0.764374 
3 -0.338405 
4 0.974011 
5 -0.995945 
6 -1.649612 
7 0.965838 
8 -0.142608 
9 -0.804508 

In [48]: 
df[df[['a']] > 1] 

Out[48]: 
      a 
0 1.042971 
1  NaN 
2  NaN 
3  NaN 
4  NaN 
5  NaN 
6  NaN 
7  NaN 
8  NaN 
9  NaN 

這裏的關鍵語義的區別是返回的是一個DF當您雙擊標所以這掩蓋了DF本身,而不是指數

注意的是,如果你有多個列,那麼它將掩蓋所有這些作爲NaN

+0

謝謝!我從來不知道雙下標的事情! – NickD1

+0

@EdChum - 對DataFrame(含多列)的處理,所有的行元素都不是NaN,我懷疑?只是,過濾的列將被設置爲NaN – Zero

+0

@JohnGalt是的,我添加了這個,我不知道OP的真正df實際上是什麼樣的,所以圍繞這個 – EdChum