You need:
Select columns by intersection:
rng = pd.date_range(date(2015,6,1), date(2017,8,15))
df = df[rng.intersection(df.columns)]
Or by exact indexing:
df = df.loc[:, '2015-06-01':'2017-08-15']
Or by conditions:
df = df.loc[:, (df.columns >= '2015-06-01') & (df.columns <= '2017-08-15')]
rng = pd.date_range(datetime(2015,6,1),datetime(2015,6,7))
df = df.iloc[:, df.columns.isin(rng)]
Or by truncate:
df = df.truncate('2015-06-01','2017-08-15', axis=1)
Sample:
from datetime import datetime
np.random.seed(452)
rng = pd.date_range('2015-06-01', periods=10)
df = pd.DataFrame(np.random.randint(10, size=(10,10)), columns=rng).iloc[:, np.r_[0:2, 5:9]]
print (df)
2015-06-01 2015-06-02 2015-06-06 2015-06-07 2015-06-08 2015-06-09
0 0 7 0 3 0 7
1 8 9 8 1 0 2
2 5 2 2 0 0 9
3 2 9 3 8 0 6
4 8 8 7 4 9 8
5 9 9 0 4 0 4
6 2 1 4 1 0 1
7 4 1 9 5 6 7
8 5 9 8 1 4 6
9 6 5 2 5 3 1
rng = pd.date_range(datetime(2015,6,1),datetime(2015,6,7))
df1 = df[rng.intersection(df.columns)]
df2 = df.loc[:, '2015-06-01':'2015-06-07']
df3 = df.loc[:, (df.columns >= '2015-06-01') & (df.columns <= '2015-06-07')]
rng = pd.date_range(datetime(2015,6,1),datetime(2015,6,7))
df4 = df.iloc[:, df.columns.isin(rng)]
df5 = df.truncate('2015-06-01','2015-06-07', axis=1)
print (df1)
#print (df2)
#print (df3)
#print (df4)
#print (df5)
2015-06-01 2015-06-02 2015-06-06 2015-06-07
0 0 7 0 3
1 8 9 8 1
2 5 2 2 0
3 2 9 3 8
4 8 8 7 4
5 9 9 0 4
6 2 1 4 1
7 4 1 9 5
8 5 9 8 1
9 6 5 2 5