2017-07-06 40 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

好吧,只需將它添加到 –