使用多列从pandas数据框中选择

时间:2015-01-04 10:17:06

标签: select pandas

我有以下数据框:

              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之外,还有更多的代码,它还会延续更多的行。

我想选择使用Ticker和Date,但我无法弄清楚如何。我想选择好像我在SQL中说:

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

谢谢!

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

以下内容应该有效:

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

这里我们必须使用数组&运算符而不是and,因为运算符优先级必须使用括号

答案 2 :(得分:-1)

我已经想出将Ticker分成一个子集数据帧,然后按日期索引,然后按日期选择。但我仍然想知道是否有更有效的方法。

cur_df =  df.ix['A']
cur_df = cur_df.set_index(['Date'])
print cur_df['Adj Close']['2014-11-20']