擅长:python、mysql、java
<p>Python解释</p>
<pre><code>[dfp['instrument'].isin(['GE', 'INTC']) & dfp.date == olddate]
</code></pre>
<p>作为</p>
^{pr2}$
<p>而不是</p>
<pre><code>(dfp['instrument'].isin(['GE', 'INTC'])) & (dfp.date == olddate)
</code></pre>
<p>根据<a href="https://docs.python.org/2/reference/expressions.html#operator-precedence" rel="nofollow">operator precedence rules</a>,<code>&</code>的优先级高于<code>==</code>,因此{<cd1>}旁边的两个项在应用<code>==</code>之前绑定在一起。在</p>
<p>如果不想深入考虑运算符优先级问题,请始终将布尔表达式括在括号中,以强制执行所需的操作顺序。在</p>
<hr/>
<pre><code>import datetime as DT
import numpy as np
import pandas as pd
dfp = pd.DataFrame([
dict(instrument = 'GE', price = 10, date = DT.datetime(2013,1,10,0,0)),
dict(instrument = 'INTC', price = 15, date = DT.datetime(2013,1,10,0,0))])
olddate = np.datetime64(DT.datetime(2013,1,10,0,0))
pv = dfp[(dfp['instrument'].isin(['GE', 'INTC'])) & (dfp.date == olddate)]
print(pv)
</code></pre>
<p>收益率</p>
<pre><code> date instrument price
0 2013-01-10 GE 10
1 2013-01-10 INTC 15
</code></pre>