Reputation: 99
Suppose you have the following dataframe:
Col1 Col2 Col3 Col4 Col5
Index
Row1 Code1 Code2 Code3 Code4 Code5
Row2 1 0 1 1 0
Row3 10 0 10 0 10
Row4 7070 56746 87647 969 687876
Row5 98798 79657 6876 977 6678
Is there a way to select columns based on criteria for the rows (index)?
So for instance,
for all columns with Row2==1:
do something with all the rows in those columns
and similarly
for all columns with Row3==0:
do something with all the rows in those columns
etc.
I was thinking something like
for "Row3" in df.index:
if "Row3" == 0:
# Do certain calculation
Upvotes: 1
Views: 368
Reputation: 30920
Use DataFrame.loc
:
m2 = df.loc['Row2'].eq(1)
#m2 = df.loc['Row2'].eq('1') #if string type
cols_Row2 = df.columns[m2]
#Index(['Col1', 'Col3', 'Col4'], dtype='object')
#for col in cols_Rows2:
#.....
Indexing the dataframe
df.loc[:,m2]
# Col1 Col3 Col4
#Index
#Row1 Code1 Code3 Code4
#Row2 1 1 1
#Row3 10 10 0
#Row4 7070 87647 969
#Row5 98798 6876 977
Upvotes: 1