我正在尝试创建一个新变量,作为数据库(mark1 type = float)
中存在的另一个数字变量的平均值。
不幸的是,结果是一个带有所有NaN
值的新列。
仍然无法理解原因。
我编写的代码如下:
df = pd.read_csv("students2.csv")
df.loc[:, 'mean_m1'] = pd.Series(np.mean(df['mark1']).mean(), index= df)
此代码后的前几行:
df.head()
ID gender subject mark1 mark2 mark3 fres mean_m1
0 1 mm 1 17.0 20.0 15.0 neg NaN
1 2 f 2 24.0 330.0 23.0 pos NaN
2 3 FEMale 1 17.0 16.0 24.0 0 NaN
3 4 male 3 27.0 23.0 21.0 1 NaN
4 5 m 2 30.0 22.0 24.0 positive NaN
None
错误消息被打印。
非常感谢!
答案 0 :(得分:0)
您需要GroupBy
+ transform
和'mean'
。
对于您提供的数据,这等于mark1
。您可能应该将性别映射到类别,例如M
或F
,作为初步步骤。
df['mean_m1'] = df.groupby('gender')['mark1'].transform('mean')
print(df)
ID gender subject mark1 mark2 mark3 fres mean_m1
0 1 mm 1 17.000 20.000 15.000 neg 17.000
1 2 f 2 24.000 330.000 23.000 pos 24.000
2 3 FEMale 1 17.000 16.000 24.000 0 17.000
3 4 male 3 27.000 23.000 21.000 1 27.000
4 5 m 2 30.000 22.000 24.000 positive 30.000