2012-09-28 53 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