Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Replace value in Pandas Dataframe based on condition

I have a dataframe column with some numeric values. I want that these values get replaced by 1 and 0 based on a given condition. The condition is that if the value is above the mean of the column, then change the numeric value to 1, else set it to 0.

Here is the code I have now:

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

dataset = pd.read_csv('data.csv')
dataset = dataset.dropna(axis=0, how='any')

X = dataset.drop(['myCol'], axis=1)
y = dataset.iloc[:, 4:5].values

mean_y = np.mean(dataset.myCol)

The target is the dataframe y. y is like so:

      0
0    16
1    13
2    12.5
3    12

and so on. mean_y is equal to 3.55. Therefore, I need that all values greater than 3.55 to become ones, and the rest 0.

I applied this loop, but without success:

for i in dataset.myCol:
    if dataset.myCol[i] > mean_y:
        dataset.myCol[i] = 1
    else:
        dataset.myCol[i] = 0

The output is the following:

      0
0    16
1    13
2    0
3    12

What am I doing wrong? Can someone please explain me the mistake?

Thank you!

like image 240
AndrewDAG Avatar asked Sep 01 '25 21:09

AndrewDAG


1 Answers

Try this vectorized approach:

dataset.myCol = np.where(dataset.myCol > dataset.myCol.mean(), 1, 0)
like image 130
MaxU - stop WAR against UA Avatar answered Sep 03 '25 09:09

MaxU - stop WAR against UA