1

I have a DataFrame with 75 columns.

How can I select rows based on a condition in a specific array of columns? If I want to do this on all columns I can just use

df[(df.values > 1.5).any(1)] 

But let's say I just want to do this on columns 3:45.

2 Answers 2

1

Another solution with iloc, values can be omited:

#if need from 3rd to 45th columns print (df[((df.iloc[:, 2:45]) > 1.5).any(1)]) 

Sample:

np.random.seed(1) df = pd.DataFrame(np.random.randint(3, size=(5,10)), columns=list('abcdefghij')) print (df) a b c d e f g h i j 0 1 0 0 1 1 0 0 1 0 1 1 0 2 1 2 0 2 1 2 0 0 2 2 0 1 2 2 0 1 1 2 0 3 2 1 1 1 1 2 1 1 0 0 4 1 0 0 1 2 1 0 2 2 1 print (df[((df.iloc[:, 2:5]) > 1.5).any(1)]) a b c d e f g h i j 1 0 2 1 2 0 2 1 2 0 0 2 2 0 1 2 2 0 1 1 2 0 4 1 0 0 1 2 1 0 2 2 1 
Sign up to request clarification or add additional context in comments.

Comments

1

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

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.