2017-07-06 42 views
1

我有一个数据框,其中有一个列有参与者的全名,另一列有出席特定年份的列。每个参与者的名字出现多次,出席该年。我想为特定人员添加出勤值,以查看他们参加总共的次数。现在我正在使用这个命令,但它增加了出席列中的所有值。在列中添加基于不同列中的名称的列python

StudentinfoAll['Attendance_x'].sum(axis=0) 

如何编辑此文件,以便它能给出特定人员的出勤值总和?感谢您的帮助。

这里是我的数据帧貌似 这里是什么样子

Full Name Attendance Question 1 Question 2 
Dan Smith  4   3.0   2.0 
Erika Jones 5   6.0   0.0 
Dan Smith  3   5.0   7.0 
Erika Jones 5   5.0   3.0 
+1

对于特定学生你可以使用条件索引,例如:'StudentinfoAll [StudentinfoAll ['Name'] ==''] ['Attendance_x']。sum()' – AChampion

+0

我试过这个,得到的总和是0什么时候应该是26 –

回答

0

假设你想通过学生总数(不只是一次一个学生),可以通过操作需要一组。例如,对于一个test.csv输入:

Full Name,Attendance,Question 1,Question 2 
Dan Smith,4,3.0,2.0 
Erika Jones,5,6.0,0.0 
Dan Smith,3,5.0,7.0 
Erika Jones,5,5.0,3.0 

和一些聚合代码:

import numpy as np 
import pandas as pd 

df = pd.read_csv('test.csv') 
print df.groupby('Full Name').agg({'Attendance': np.sum}) 

你会得到下面的输出(通过全名出席):

   Attendance 
Full Name    
Dan Smith    7 
Erika Jones   10 
+0

这是按字母顺序排列的名字,并且移动了出席者列,但它没有给我出勤值的总和 –

+0

你可以发布一个'StudentinfoAll'的样本吗?否则难以调试。 – keredson

+0

好吧,只需将它添加到 –