python条件替换_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)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值