擅长:python、mysql、java
<p>您可以使用<code>query</code>,它是为这种选择标准而设计的。在</p>
<p>如果稍微修改一下<code>dictionary</code>,则可以借助列表理解生成所需的查询:</p>
<pre><code>In : dictionary
Out:
{'a': ('20130102', '20130105'),
'b': ('20130103', '20130103'),
'c': ('20130103', '20130105')}
In : df.query(
' or '.join("('{}' <= date <= '{}' and letter == '{}')".format(*(v + (k,)))
for k, v in dictionary.items())
)
Out:
0
letter date
a 2013-01-02 -1.190976
2013-01-03 1.432707
2013-01-04 -0.312652
2013-01-05 -0.720589
b 2013-01-03 0.015696
c 2013-01-03 -0.334077
2013-01-04 0.002118
2013-01-05 0.405453
</code></pre>
<p>有关查询语句实际执行什么操作的详细信息,请参见下面的列表理解:</p>
^{pr2}$