2012-09-28 49 views

回答

2

一般来说,我发现自己使用boolean indexing和波浪运营商获得的逆时一个选择,而不是df.drop(),尽管当使用布尔索引来形成要放下的标签数组时,同样的概念适用于df.drop。希望有所帮助。

In [44]: df 
Out[44]: 
      A   B 
0 0.642010 0.116227 
1 0.848426 0.710739 
2 0.563803 0.416422 

In [45]: cond = (df.A > .6) & (df.B > .3) 

In [46]: df[cond] 
Out[46]: 
      A   B 
1 0.848426 0.710739 

In [47]: df[~cond] 
Out[47]: 
      A   B 
0 0.642010 0.116227 
2 0.563803 0.416422 
+0

这是一个非常好的克服。 – fred

1

如果我理解你的权利,你可以通过该指数具有“ISIN”索引得到这样的效果:

>>> df 
     A   B   C 
0 0.754956 -0.597896 0.245254 
1 -0.987808 0.162506 -0.131674 
2 -1.064639 -2.193629 1.814078 
3 -0.483950 -1.290789 1.776827 
4 -0.191055 -0.461204 0.412220 
>>> df[df.index.isin([0, 2, 3])] # Drop rows whose label is not in the set [0, 2, 3] 
     A   B   C 
0 0.754956 -0.597896 0.245254 
2 -1.064639 -2.193629 1.814078 
3 -0.483950 -1.290789 1.776827