Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 根据csv文件中的主键计算数量的平均值_Python_Csv - Fatal编程技术网

Python 根据csv文件中的主键计算数量的平均值

Python 根据csv文件中的主键计算数量的平均值,python,csv,Python,Csv,我有一个csv文件,其中包含学生的sgpa。我必须计算这些学生的cgpa。学生id_no是csv文件中的主键。该文件的格式为: St_id St_name sem_id sgpa 1 abc 1 2 2 pqr 1 2.5 1 abc 2 3 2 pqr 2 3.5 3 x

我有一个csv文件,其中包含学生的sgpa。我必须计算这些学生的cgpa。学生id_no是csv文件中的主键。该文件的格式为:

St_id    St_name    sem_id    sgpa 
  1        abc        1        2  
  2        pqr        1        2.5
  1        abc        2        3
  2        pqr        2        3.5
  3        xzy        1        4.0
St_id    St_name   sem_id     sgpa    cgpa
  1        abc        1        2      2.5
  2        pqr        1        2.5    3.0
  1        abc        2        3      2.5
  2        pqr        2        3.5    3.0
  3        xzy        1        4.0    4.0
我现在需要一个新的专栏来计算学生的cgpa。新表格的格式应为:

St_id    St_name    sem_id    sgpa 
  1        abc        1        2  
  2        pqr        1        2.5
  1        abc        2        3
  2        pqr        2        3.5
  3        xzy        1        4.0
St_id    St_name   sem_id     sgpa    cgpa
  1        abc        1        2      2.5
  2        pqr        1        2.5    3.0
  1        abc        2        3      2.5
  2        pqr        2        3.5    3.0
  3        xzy        1        4.0    4.0

我有成千上万这样的学生,所以我无法手动计算。有人能推荐一种用Python完成这项任务的方法吗?提前感谢您的帮助。

您可以这样做:

df['cgpa'] = df.groupby('St_id')['sgpa'].transform('mean')
输出:

   St_id St_name  sem_id  sgpa  cgpa
0      1     abc       1   2.0   2.5
1      2     pqr       1   2.5   3.0
2      1     abc       2   3.0   2.5
3      2     pqr       2   3.5   3.0
4      3     xzy       1   4.0   4.0
df['cgpa']=df.apply(lambda行:df[df.St_id==row.St_id].sgpa.mean(),axi
s=1)

cgpa是如何计算的?@AshishAcharya cgpa只是sgpa的平均值。因此,如果学生有3个学期,那么(sem1sgpa+sem2sgpa+sem3sgpa)/3。谢谢你的帮助。没问题:)