2013-05-04 169 views
0

我有這樣一個數據幀:大熊貓篩選數據框列

   A  B  C  D  
2000-01-03 -0.59885 0.18141 -0.68828 0.77572 
2000-01-04 0.83935 0.15993 0.95911 -1.12959 
2000-01-05 2.80215 -0.10858 -1.62114 -0.20170 
2000-01-06 0.71670 -0.26707 1.36029 1.74254 

我想過濾基於第一行的值列。 例如我想只取第一個值大於0的列。我希望得到的結果是這樣的:

   B  D  
2000-01-03 0.18141 0.77572 
2000-01-04 0.15993 -1.12959 
2000-01-05 -0.10858 -0.20170 
2000-01-06 -0.26707 1.74254 

更新 感謝Jeff建議我寫這樣的代碼:

cols = [] 
firstRow = df.ix[0,:] 
for i in range(len(firstRow)): 
    if firstRow[i]>0: 
    cols.append(i) 
return df.ix[:, list(cols)].values.copy() 

有沒有更優雅的方式來做到這一點?

回答

1

這顯然是使用下面生成的數據,但您可以輕鬆應用到您的示例中。 的iloc[-2]選擇第二到最後一行,並創建一個布爾陣列 的loc然後採取該布爾陣列和選擇相應的列

In [2]: df = DataFrame(np.random.randn(4,4),columns=list('ABCD'), 
      index=date_range('20000103',periods=4)) 

In [3]: df 
Out[3]: 
        A   B   C   D 
2000-01-03 -0.132896 -0.151352 0.960943 -0.007701 
2000-01-04 -1.653279 -1.101331 -2.083493 -1.920517 
2000-01-05 -1.190868 0.983487 0.804209 0.962575 
2000-01-06 0.232290 2.152097 0.414457 1.023253 

In [6]: df.loc[:,df.iloc[-2]<0] 
Out[6]: 
        A 
2000-01-03 -0.132896 
2000-01-04 -1.653279 
2000-01-05 -1.190868 
2000-01-06 0.232290 
+0

AttributeError的:「數據幀」對象沒有屬性「ILOC」 – Roberto 2013-05-04 19:41:04

+0

似乎我的熊貓版本不喜歡0.11中的iloc – Roberto 2013-05-04 19:42:50

+0

。您可以使用ix代替iloc/loc – Jeff 2013-05-04 19:49:58