Select 来自使用多列的 pandas 数据框
Select from panadas dataframe using multiple columns
我有以下数据框:
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 之外还有更多的代码,它会继续更多行。
我想 select 同时使用 Ticker 和 Date,但我不知道该怎么做。我想 select 就像我在 SQL 中说的那样:
Select 'Adj Close' from prices where Ticker = 'ZTS' and 'Date' = '2014-12-22'
谢谢!
我想出了将 Ticker 分成子数据框的方法,然后按日期索引,然后 select 按日期索引。但我仍然想知道是否有更有效的方法。
cur_df = df.ix['A']
cur_df = cur_df.set_index(['Date'])
print cur_df['Adj Close']['2014-11-20']
>>> 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
以下应该有效:
df[(df['Date'] == '2014-12-22') & (df.index == 'ZTS')]['Adj Close']
这里我们必须使用数组 &
运算符而不是 and
并且由于运算符优先级,您必须使用括号
我有以下数据框:
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 之外还有更多的代码,它会继续更多行。
我想 select 同时使用 Ticker 和 Date,但我不知道该怎么做。我想 select 就像我在 SQL 中说的那样:
Select 'Adj Close' from prices where Ticker = 'ZTS' and 'Date' = '2014-12-22'
谢谢!
我想出了将 Ticker 分成子数据框的方法,然后按日期索引,然后 select 按日期索引。但我仍然想知道是否有更有效的方法。
cur_df = df.ix['A']
cur_df = cur_df.set_index(['Date'])
print cur_df['Adj Close']['2014-11-20']
>>> 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
以下应该有效:
df[(df['Date'] == '2014-12-22') & (df.index == 'ZTS')]['Adj Close']
这里我们必须使用数组 &
运算符而不是 and
并且由于运算符优先级,您必须使用括号