我有一个数据框列,其中包含一些数字值。我希望根据给定的条件将这些值替换为1和0。条件是,如果该值高于该列的平均值,则将数值更改为1,否则将其设置为0。
以下是我现在拥有的代码:
目标是数据框 y。y 的格式如下:
输出结果如下:
我做错了什么?有人能解释一下我的错误吗?
谢谢!
以下是我现在拥有的代码:
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
等等,第一句话中的“and so on”是什么意思?如果您能告诉我更多上下文,那么我就可以更好地为您翻译。
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
系列。i
- 包含值,而dataset.myCol[i]
需要索引。注意:在 Pandas 中,循环应该作为“最后的手段”使用,当没有其他办法时。 - MaxU - stand with Ukraine