创建数字变量issu

2024-09-25 16:34:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图创建一个新变量,作为数据库中另一个数值var的平均值(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将打印错误消息。 太多了


Tags: csv代码数据库dfreadvartypenan
1条回答
网友
1楼 · 发布于 2024-09-25 16:34:10

你需要GroupBy+transform'mean'

对于您所提供的数据,这相当于mark1。作为一个初步步骤,你可能应该将你的性别映射到类别,例如MF

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

相关问题 更多 >