2015-01-04 35 views
-1

panadas數據幀我有以下數據框:選擇使用多列

   Date Adj Close 
Ticker      
ZTS  2014-12-22  43.41 
ZTS  2014-12-19  43.51 
ZTS  2014-12-18  43.15 
ZTS  2014-12-17  41.13 

有許多不僅僅是ZTS多行情,繼續在更多的行。

我想選擇使用代碼和日期,但我不知道如何。我想選擇,如果我是在SQL說:

Select 'Adj Close' from prices where Ticker = 'ZTS' and 'Date' = '2014-12-22'

謝謝!

回答

0

下面應該工作:

df[(df['Date'] == '2014-12-22') & (df.index == 'ZTS')]['Adj Close'] 

在這裏,我們必須使用數組而&運營商帶來了and還必須使用因括號運算符優先級

+0

實際上票名是行名 – aerokite 2015-01-04 10:45:41

+0

@AerofoilKite謝謝指出已經更新 – EdChum 2015-01-04 11:13:43

-1

我已經想通了將報價單分成子集數據框,然後按日期索引,然後按日期選擇。但我仍然想知道是否有更有效的方法。

cur_df = df.ix['A'] 
cur_df = cur_df.set_index(['Date']) 
print cur_df['Adj Close']['2014-11-20'] 
0
>>> import pandas 
>>> from pandas import * 

>>> L = [['2014-12-22',43.41],['2014-12-19',43.51],['2014-12-18',43.15], ['2014-12-17',41.13]] 
>>> C = ['ZTS', 'ZTS','ZTS','ZTS'] 

>>> df = DataFrame(L, columns=['Date','Adj Close'], index=[C]) 
>>> df 
      Date Adj Close 
ZTS 2014-12-22  43.41 
ZTS 2014-12-19  43.51 
ZTS 2014-12-18  43.15 
ZTS 2014-12-17  41.13 

>>> D1 = df.ix['ZTS'][df['Date']=='2014-12-22']['Adj Close'] 
>>> D1 
ZTS 43.41 
+0

謝謝,但我的代碼似乎運行得更快,15秒,相比於60. – mobone 2015-01-04 10:36:10