Fuad Ak
Fuad Ak

Reputation: 158

Slice dataframe based on boolean function

I have D.F. named test:

      December January    Rating
    0   35.00   35.00      1star
    1   0.00    100.00     2star
    2   38.71   28.46      3star
    3   74.32   61.32      4star
    4   65.39   66.505     3star

I want to filter rows except the last column, based on this boolean: test[test<test.mean()] Note that mean() value will be different for each column.

Result is :

  December  January  Rating
0   35.00   35.00     NaN
1   0.00    NaN       NaN
2   38.71   28.46     NaN
3   NaN     NaN       NaN
4   NaN     NaN       NaN

Desired output:

     December January     Rating
    0   35.00   35.00     1star
    1   0.00    NaN       2star
    2   38.71   28.46     3star
    3   NaN     NaN       4star
    4   NaN     NaN       3star

Upvotes: 2

Views: 101

Answers (1)

BENY
BENY

Reputation: 323226

USe mean and where lt here is <

df[['December','January']]=df[['December','January']].where(df.lt(df.mean()))
df
Out[77]: 
   December  January Rating
0     35.00    35.00  1star
1      0.00      NaN  2star
2     38.71    28.46  3star
3       NaN      NaN  4star
4       NaN      NaN  3star

Upvotes: 1

Related Questions