I have a list containing names of the columns of a dataframe.
x = ['USPR', 'ESA', 'OSFI', 'APRA']
The values for these columns are either ‘Yes’ or ‘No’.
I want to filter out rows that’d have any of the columns having ‘Yes’. I want to use maybe a for loop to iterate through the list because the list is created from user input. So instead of having a static check like below:
df = df[(df['USPR'] == 'Yes') | (df['ESA'] == 'Yes') | (df['OSFI'] == 'Yes') | (df['APRA'] == 'Yes')]
I’m wondering how to make this dynamic using a loop, i.e. number of the conditions checked would be equal to the length of x
. Or any other suggestion to achieve the outcome would also be appreciated.
Much thanks.
For the below sample dataframe:
I’m supposed to get the filtered dataframe as below:
Advertisement
Answer
Try this to remove all the rows where all values are “no”.
original df:
USPR | ESA | OFI |
---|---|---|
yes | no | yes |
no | yes | yes |
no | no | no |
df = df[(df != "no").any(axis=1)]
Output:
USPR | ESA | OFI |
---|---|---|
yes | no | yes |
no | yes | yes |