Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

filter pandas dataframe by row value

Tags:

python

pandas

I know how to filter a dataframe by column value:

import pandas as pd
import numpy as np
from numpy.random import randn
np.random.seed(101)
df = pd.DataFrame(randn(5,4),index='A B C D E'.split(),columns='W X Y Z'.split())
print(df)
# show only rows where 'W' is positive
# here, the row for 'C' will be deleted, since df['W']['C']<0
df[df['W']>0]

But how do I filter by row value, e.g. 'B'>0?

Since df['X']['B']<=0 and df['Y']['B']<=0, I would like to delete columns X and Y. I tried the following code, but it reports an error:

df.loc[df.loc['B']>0]
like image 646
R71 Avatar asked Jul 18 '26 11:07

R71


1 Answers

You should using the filter on columns

df.loc[:,df.loc['B',:]>0]
Out[67]: 
          W         Z
A  2.706850  0.503826
B  0.651118  0.605965
C -2.018168 -0.589001
D  0.188695  0.955057
E  0.190794  0.683509
like image 183
BENY Avatar answered Jul 21 '26 01:07

BENY



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!