根据条件替换Pandas Dataframe中的值

达格

我有一个带有一些数值的数据框列。我希望根据给定条件将这些值替换为1和0。条件是,如果该值高于列的平均值,则将数值更改为1,否则将其设置为0。

这是我现在拥有的代码:

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)

目标是数据帧y。y就像这样:

      0
0    16
1    13
2    12.5
3    12

等等。mean_y等于3.55。因此,我需要所有大于3.55的值都必须成为1,其余的都应成为0。

我应用了此循环,但未成功:

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

输出如下:

      0
0    16
1    13
2    0
3    12

我究竟做错了什么?有人可以解释一下我的错误吗?

谢谢!

最大容量

尝试以下矢量化方法:

dataset.myCol = np.where(dataset.myCol > dataset.myCol.mean(), 1, 0)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章