【发布时间】:2018-08-08 04:47:32
【问题描述】:
我正在尝试编写一个简单的程序来跟踪我本学期两门大学课程的出勤情况。我需要每个科目的每个班级至少有 80% 的出勤率。每个科目有三个班级(T、TP 和 P)。
修了一阵子,终于找到了groupby pandas函数:
import pandas as pd
import sys
df = pd.read_csv(sys.argv[1])
g = df.groupby(['Subject','Class']).count()
print(g)
源文件中每个班级都有一行,我会在其中注明“Presente”。当由于某些外部原因没有上课时,我也会注意“Sin Clases”。这是源文件前 5 行的样子:
Date Day Subject Class Attendance Comments
0 6/8/2018 2 Medieval T Presente NaN
1 6/8/2018 2 Logica T Presente NaN
2 6/8/2018 2 Logica P NaN NaN
3 8/8/2018 4 Logica TP Sin clases Movilización IVE
4 8/8/2018 4 Logica P NaN Movilización IVE
这是当前的输出。我无法弄清楚如何执行某种操作并添加一列。例如,为每个子组添加一列,仅计算值为“Presente”的那些行。我发现自己把事情复杂化了,我害怕我错过了一些东西。
z:\devs\py\asist>python asistb.py asist2q.csv
Date Day Attendance Comments
Subject Class
Logica P 32 32 3 4
T 16 16 4 3
TP 16 16 1 1
Medieval P 16 16 0 0
T 32 32 5 4
TP 16 16 1 1
非常感谢您提供有关如何解决该问题的提示或提示。非常感谢!
【问题讨论】:
标签: python pandas pandas-groupby