How to calculate rows where it has values in at least 3 columns

  • Python
  • Thread starter msn009
  • Start date
  • Tags
    python
  • #1
53
6

Main Question or Discussion Point

I am trying to count number of rows that has values in at least 3 columns so the output based on the image shared should be 4. I tried using the code below but it is resulting in the same shape as the whole table which is 7.

Python:
counts = df[(df[['a', 'b', 'c', 'd]] != 'no_label').count(axis=1) >= 3]
 

Attachments

Answers and Replies

  • #2
34,043
9,891
sum(row.count("no_label")<2 for row in df)
If your table includes the header but you don't want to count that: subtract 1.
 
  • #3
53
6
thank you for this suggestion. but what if i only want to check from these columns a,b,c, and d? as I have other columns e,f,g that also has the 'no_label' value but I don't want to consider them,
 
  • #4
34,043
9,891
sum(row[0:4].count("no_label")<2 for row in df)
 
  • #5
53
6
i wanted to do it this way so that i can select the columns that could be in other position in the dataframe:

Python:
cols = ['a', 'b', 'c', 'd'']

sum(row[cols].count("no_label") < 2 for row in df)
but it gives me this error :

TypeError: string indices must be integers, not list

what can i do to use the column names explicitly instead. thanks
 
  • #6
34,043
9,891
Where do the column labels come from? Are they the first row of you array? I wouldn't do that, it is bad style. Select them based on integers.
If you absolutely need strings convert them to integers for the sum.
 
  • #7
53
6
yes they are but in this case there are more than 10 columns which makes it difficult to determine the location of the column using integers.
 
  • #8
34,043
9,891
You keep changing the task. Why don't you show what exactly you want to do?

cols={'a':0,'b':1,'c':2,'d':3}
sum(row[cols['a']:cols['c']].count("no")>0 for row in df)

Or, if the first row of df has the column names:
Code:
cols2={}
for x,y in enumerate(df[0]):
  cols2[y]=x
 
  • #9
53
6
thanks. sorry for not explaining the scenario in detail.
 

Related Threads on How to calculate rows where it has values in at least 3 columns

Replies
2
Views
1K
  • Last Post
Replies
2
Views
2K
Replies
9
Views
4K
  • Last Post
Replies
7
Views
413
Replies
6
Views
4K
Replies
5
Views
571
Replies
5
Views
675
  • Last Post
Replies
4
Views
2K
Replies
1
Views
522
Top