<p>我认为@anky使用<a href="https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.r_.html" rel="nofollow noreferrer">np.r_</a>是正确的方法,而且非常灵活,这个答案只是一个替代方法,使用pandas内置索引方法:</p>
<p>注意:我正在使用@anky的示例数据帧:</p>
<pre><code>df = pd.DataFrame(columns=list('ab') +
[*map(str,pd.date_range('2000','2021',freq='y').year)])
</code></pre>
<p>使用<a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Index.slice_indexer.html#pandas.Index.slice_indexer" rel="nofollow noreferrer">slice_indexer</a>获取感兴趣值的切片位置:</p>
<pre><code>A = df.columns.slice_indexer('2005','2010')
A
slice(7, 13, None)
#if one entry is included, it includes the location of the last index
B = df.columns.slice_indexer('2015')
B
slice(17, 23, None)
</code></pre>
<p>添加A和B的<a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.iloc.html" rel="nofollow noreferrer">iloc</a>索引:</p>
<pre><code>res = df.iloc[:,A] + df.iloc[:,B]
res
Index(['2005', '2006', '2007', '2008', '2009', '2010', '2015', '2016', '2017',
'2018', '2019', '2020'],
dtype='object')
</code></pre>
<p>还要注意@anky的方法会更有效,因为iloc只被调用一次。同样,这只是一个可用方法的游戏</p>
<p>当然,您可以将A和B的<a href="https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.r_.html" rel="nofollow noreferrer">np.r_</a>与<a href="https://docs.python.org/3/library/functions.html?highlight=slice#slice" rel="nofollow noreferrer">slices</a>组合起来:</p>
<pre><code>res = df.iloc[:,np.r_[A,B]]
res.columns
Index(['2005', '2006', '2007', '2008', '2009', '2010', '2015', '2016', '2017',
'2018', '2019', '2020'],
dtype='object')
</code></pre>