2015-10-06 46 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