【发布时间】:2018-09-26 04:51:45
【问题描述】:
我有一个包含一些数值的数据框列。我希望根据给定条件将这些值替换为 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
我做错了什么?有人可以解释一下这个错误吗?
谢谢!
【问题讨论】:
标签: python pandas dataframe replace conditional-statements