<p>您需要将list的值转换为<code>datetime</code>,因为<code>DatetimeIndex</code>,这意味着需要相同类型的list值和DataFrame的index/columns值,否则<code>KeyError</code>:</p>
<pre><code>print(df.loc[pd.to_datetime(['20130102','20130104']),['A','B']])
A B
2013-01-02 0.719469 0.423106
2013-01-04 0.438572 0.059678
</code></pre>
<p><strong>按索引/列的第一个和最后一个值选择</p>
<p>转换成<code>datetimes</code>是没有必要的,因为<a href="http://pandas.pydata.org/pandas-docs/stable/timeseries.html#partial-string-indexing" rel="nofollow noreferrer">partial string indexing</a>。你知道吗</p>
<p>对于按范围选择仅删除列表<code>[]</code>用于选择列:</p>
<pre><code>print(df.loc['20130102':'20130104','A':'C'])
A B C
2013-01-02 0.719469 0.423106 0.980764
2013-01-03 0.480932 0.392118 0.343178
2013-01-04 0.438572 0.059678 0.398044
</code></pre>
<p>选择日期时间的类似解决方案:</p>
<pre><code>print(df.loc['2013-01-02':'2013-01-04','A':'C'])
A B C
2013-01-02 0.719469 0.423106 0.980764
2013-01-03 0.480932 0.392118 0.343178
2013-01-04 0.438572 0.059678 0.398044
</code></pre>
<p>组合:</p>
<pre><code>#select betwen start/end datetime and only columns A,C
print(df.loc['20130102':'20130104',['A','C']])
A C
2013-01-02 0.719469 0.980764
2013-01-03 0.480932 0.343178
2013-01-04 0.438572 0.398044
#select only 20130102, 20130104 index and columns between A and C
print(df.loc[pd.to_datetime(['20130102','20130104']),'A':'C'])
A B C
2013-01-02 0.719469 0.423106 0.980764
2013-01-04 0.438572 0.059678 0.398044
</code></pre>