微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – 根据条件替换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.你是这样的:

      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] 举报,一经查实,本站将立刻删除。

相关推荐