擅长:python、mysql、java
<p>只要对原词典稍作改动,我们就可以把它写得更简洁一些。我们可以在列表理解中使用<code>pd.IndexSlice</code>,然后<code>pd.concat</code></p>
<pre><code># add `-` to separate dates
dictionary = {"a": slice("2013-01-02", "2013-01-05"),
"b": "2013-01-03",
"c": slice("2013-01-03", "2013-01-05")}
dictionary = OrderedDict(sorted(dictionary.items()))
idx_slices = [pd.IndexSlice[k, v] for k, v in dictionary.items()]
pd.concat([df.loc[idx, :] for idx in idx_slices])
Out[1]:
0
letter date
a 2013-01-02 -1.190976
2013-01-03 1.432707
2013-01-04 -0.312652
2013-01-05 -0.720589
c 2013-01-03 -0.334077
2013-01-04 0.002118
2013-01-05 0.405453
b 2013-01-03 0.015696
</code></pre>
<p>如果您希望自动添加<code>-</code>,可以使用<code>datetime</code>,如下所示:</p>
^{pr2}$