Use ix to slice the columns using ordinal position:
In [31]: df = pd.DataFrame(np.random.randn(5,10), columns=list('abcdefghij')) df Out[31]: a b c d e f g \ 0 -0.362353 0.302614 -1.007816 -0.360570 0.317197 1.131796 0.351454 1 1.008945 0.831101 -0.438534 -0.653173 0.234772 -1.179667 0.172774 2 0.900610 0.409017 -0.257744 0.167611 1.041648 -0.054558 -0.056346 3 0.335052 0.195865 0.085661 0.090096 2.098490 0.074971 0.083902 4 -0.023429 -1.046709 0.607154 2.219594 0.381031 -2.047858 -0.725303 h i j 0 0.533436 -0.374395 0.633296 1 2.018426 -0.406507 -0.834638 2 -0.079477 0.506729 1.372538 3 -0.791867 0.220786 -1.275269 4 -0.584407 0.008437 -0.046714
So to slice the 4th to 5th columns inclusive:
In [32]: df.ix[:, 3:5] Out[32]: d e 0 -0.360570 0.317197 1 -0.653173 0.234772 2 0.167611 1.041648 3 0.090096 2.098490 4 2.219594 0.381031
So in your case
df[(df.ix[:, 2:45]).values > 1.5).any(1)]
should work
indexing is 0 based and the open range is included but the closing range is not so here 3rd column is included and we slice up to column 46 but this is not included in the slice