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!
Try this vectorized approach:
dataset.myCol = np.where(dataset.myCol > dataset.myCol.mean(), 1, 0)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With